Copyright: Copyright 1995-1998 Innoview Data Technologies Oy


Innoview
Innoview Data Technologies Oy

Company

Innoview is a Finnish software company which is focused on globalization tools for all platforms.

If you need more information do not hesitate to contact us.

Contact

Innoview Data Technologies Oy
Eteläranta 14 A 6
FIN-00130 Helsinki
Finland

Internet:	www.multilizer.com
E-mail:	info@multilizer.com (General information)
vcl@multilizer.com (Technical support for VCL, e.g. Delphi and C++Builder)
java@multilizer.com (Technical support for Java)
visualbasic@multilizer.com (Technical support for Visual Basic)
wfc@multilizer.com (Technical support for WFC, e.g. Visual J++)
languagemanager@multilizer.com (Technical support for Language Manager)
dictionaryserver@multilizer.com (Technical support forDictionary Server)
Fax:	+358 9 4762 0555
Phone:	+358 9 4762 0550 (time zone GMT+2)


This feature is available only in the enterprise edition.


This feature is available only in the professional edition.


This feature is available only in the 32-bit professional edition.


This feature is available only in a 32 bit environment (e.g. Delphi 2.0 and later, and C++Builder).


This feature is available only in those 32 bit environments that support charsets and IME (e.g. Delphi 3.0 and later, and C++Builder).


This feature is available only in those 32 bit environments that support bi-directional charsets (e.g. Delphi 4.0 and later).


Multilizer Dicitonary Server. Learn more.


Latin character set is any character set using Latin characters. All Western languages and most East European languages uses Latin characters. There are four different Latin character sets. They are the Western, East European, Baltic, and Turkish character sets.


Cyrillic character set uses Cyrillic characters. For example Russian, Belorussian, Bulgarian, Ukrainian and Serbian uses Cyrillic characters.


Multilizer Dictionary Server (MDS) is a high performance database server that provides translation services to the client applications. Using MDS clients have no need to store the translation data: All translation data is located on the dictionary server.


Localization means converting a program to a local market. The simplest case is to convert all the strings to the local language. In most cases you also have to make slight modification to the program to meet local standards and culture. A localized program can only support one language.

For example the native language might be English. If you decide to localize the program to German, French, and Spanish you will have four different version of the program - each supporting one language.


A multilingual application takes localization one step further, in that a single-file application supports multiple languages, including the capability of switching languages at run-time. Having only one set of source files to maintain obviously makes the development process more cost-effective.


Single worldwide binary means that there is only one version of your program. This version can handle all of the worlds languages. (Well… all of the ones that are supported by Windows)

Multilizer is the only tool that makes it possible to create a single worldwide binary.


Single worldwide source means that you have only one version of your source code. You either compile or include new resources for each localized version.

Localization techniques use single worldwide sources.


EMU (Economic and Monetary Union). All EMU members use the same currency, ? (euro).


Microsoft Foundation Classes (MFC) is the class library used by Visual C++ and some other C++ compilers.


Visual Component Library (VCL) is the component library used by Delphi and C++Builder.


OLE Database (OleDB) is the database model based on COM.


A SQL database is a server database or an ODBC database.


Code page is a code array that maps the integer code to the character of the character set. The first 128 items of every code page contains the ASCII characters. The remaining items depend on the character set.


Current code page is the code page that is set active to the system. The user can change the current code page of Windows NT, Windows 98 and some 95 by setting the International settings in the Control Panel.


Ideograph character is a character of Chinese origin representing a word or syllable that is generally used in more than one Asian language (e.g. Chinese, Japanese and Korean).


A desktop database is a local database that the component library can support directly.

Paradox and dBASE are desktop databases.


A text file is either a standard Ansi file or a Unicode file.


Language Manager uses this tag to find the strings. Language Manager adds all the strings that locate on the same source code line that the tag when LM scans the project files.


Test translation is a pseudo translation generated by the Language Manager. Tests translations are used to test the user interface without needing to translate language columns.


MULTILIZER Dictionary (MLD) file. This is a file format used by Multilizer, Language Manager and Dictionary Server. A MLD files contains all dictionary data in a single platform independent file. The MLD specification is available at http://www.multilizer.com/MLD


NLSAPI - National Language Support API is a subset of Win32 API. It provides information that is based on language and cultural convention.


A translation table is a part of a dictionary. The table contains the translation data.


A language table is a part of a dictionary. The table contains the language data.


A locale table is a part of a dictionary. The table contains the locale data.


Borlard Database Engine (BDE) is a software layer that allows Delphi and C++ applications comminicate with databases.


Open Database Connectivity (ODBC) is a de-facto standard for applications to access databases.


Native column is the column of the dictionary that holds the native language strings. The native column must be the first column.


Translate language is any language other than the native language.


Translate column is the column of the dictionary that holds the translate language strings. The translate column must not be the first column.


Test language is a pseudo language generated by the Language Manager.


Primary language id specifies the language (e.g. English, Finnish, Japanese, etc.).

Multilizer uses standard Win32 NLSAPI primary language ids (LANG_xxx). The constants can be found from the windows.pas (32 bit) or ivmulti.pas (16 bit) file.


Sub language id specifies the country of the language (e.g. English in United States, English in Great Britain, English in Canada, etc.).

Multilizer uses standard Win32 NLSAPI sub language ids (SUBLANG_xxx). The constants can be found from the windows.pas (32 bit) or ivmulti.pas (16 bit) file.


Locale is a combination of primary and sub language ids. In other word it is a language spoken in a country (e.g. German spoken in Austria). There can be multiple locales for one language. For example English (United Kingdom), English (United States), English (Canada), etc.


Locale data is a locale specific data such as currency, date and time formatting.


IME - Input Method Editor is a system service that performs the conversion between keystrokes and ideographs or other characters, usually by user-guided dictionary lookup.


Single byte character sets (SBCS), sometimes called single byte left to right, contain a maximum of 256 characters. Each character is stored in one byte. The text is written from left to right. Latin, Greek and Cyrillic character sets are single byte.


Bidirectional character set (BiDi), sometimes called single byte bidirectional, contain a maxumim of 256 characters. Each character is stored in one byte. The text is written mainly from right to left but sometimes from left to right. Arabic and Hebrew character sets are bidirectional.

The 32-bit professional edition supports bidirectional languages.


Multi byte character sets (MBCS), sometimes called double byte (DBCS) or Far East, contain more than 256 characters or idioms. Each character is stored either in one byte or two bytes. The text is written mainly from left to right top to bottom but sometimes from top to bottom left to right. Chinese, Japanese and Korean character sets are multi byte.

The professional edition supports multi byte languages.


Source code are all the files that are used to compile the application.


Choosing the right dictionary

Choosing the right dictionary type depends on the needs of your program. Using a binary dictionary or text dictionary it is possible to build up a single file application (the EXE file). Use the binary dictionary, or the text dictionary if you have to add new languages after the compilation (e.g. your local distributor could do this). Use the server dictionary if you want all application using the same centralized dictionary.

In general, we do not recommend to use the database dictionary. This is because the are slow, they add considerable load and size overhead to your application, and the size of the string is limited to the field size.

Keep in mind that Language Manager makes it easy to change the dictionary format at any time. You can start you application programming using one dictionary type and change it to another later.

The following table contains different cases and gives the most optimal dictionary or dictionaries for the case.

“I want to create a single file application”

Use the binary dictionary or text dictionary. Set the Storage property to ivsEmbedded.

“I want to my local disributor be able to translate the application withour needing to recompile it or even having the source files”

Use the binary dictionary or the text dictionary. Set the Storage property to ivsFile. Because these dictionaries store the dictionary data in an extenal dictionary file(s) you can add a new languages simple by eding the dictionary file(s).

“I want to store the dictionary data in a database but I don’t want to include BDE into my application”

Use the TIvODBCDictionary. It works directly on the top of ODBC API and does not need BDE.

“I have resource file(s) containing the translations for my application”

Use the user dictionary. Write the event code to acces the resource data.

“I want to store the dictionary data to a centralized Internet/Intraner server”

Use either the server dictionary or the database dictionary. If you need fast access and thin client use the server dictionary.

This is an ideal way to store dictionary data in a network based environment. Any update to the dictionary data is instantly available to all users. You can also add new languages after the software delivery phase.

“I want to add new language(s) support to the application event after the software delivery phase”

Use the server dictionary. Adding a new language to the Dictionary Server instantaneusly adds the language support all delivered software around the world.


Binary dictionary

The binary dictionary is a dictionary where all the tables are held in a single MLD file.

A binary dictionary uses a MLD file to store the translation, the language and the optional locale table.

Compared to a text dictionary the binary dictionary is a little bit faster, takes less storage space, and stores everything is a single file.

Binary dictionary can embed the dictionary data. This means that all the tables are stored with the application itself in a resource. Although you can not add new languages after the compilation, embedding has the advantage of allowing the creation of a single file application.

You must use Language Manager to create and edit binary dictionaries. You can find the MLD specification at

http://www.multilizer.com/MLD

Platform	Component implementation
VCL Visual Basic	TIvBinaryDictionary
Java	multilizer.BinaryDictionary
WFC	multilizer.wfc.BinaryDictionary


Text dictionary

The text dictionary is a dictionary where all the tables are held in text files. You can add new languages - even after the compilation of the application.

A file dictionary uses text files as the translation, the language and the optional locale table.

The text file dictionary uses a standard text file (Ansi or Unicode) to store data.

-	Language table format

-	Translation table format

-	Locale table format

Text dictionary can embed the dictionary data. This means that all the tables are stored with the application itself in a resource. Although you can not add new languages after the compilation, embedding has the advantage of allowing the creation of a single file application.

It is recommended that you use Language Manager to create and edit text file dictionaries.

Platform	Component implementation
VCL Visual Basic	TIvTextDictionary
Java	multilizer.TextDictionary
WFC	multilizer.wfc.TextDictionary


Text file language table format

The text file language table contains one line of data for each language. Each data item is separated by a tab character.

EnglishName<tab> NativeName<tab> Primary<tab> Subs<tab> DefaultSub<tab> FontName<tab> FontSize<tab> Options<tab> Charset<tab> CodePage<tab> ISOLanguage<tab> ISOCountries<tab> ISODefaultCountry<cr><lf>

where

<tab>	is the Tab character, h09 (Ansi), h0009 (Unicode)

<cr>	is the Carriage return, h0D (Ansi), h000D (Unicode)

<lf>	is the Line feed, h0A (Ansi), h000A (Unicode)

Example


Language table example

The following language table contains seven languages. They are the native language, English, US English, German, Finnish, Swedish and a test language.

English name	Native name	Primary	Subs	Default sub	Font name	Font size	Options	Char set	Code page	ISO Language	ISO Countries	ISO Def. Count
Native	Native	0		0		0	2	0	0
English	English	9		2		0	2	0	1252	en		UK
US English	US English	9	1,8,9	1		0	2	0	1252	en	US,JM	US
German	Deutsch	7		1		0	0	0	1252	de		DE
Finnish	suomi	11		1		0	0	0	1252	fi		FI
Swedish	svenska	29		1	Arial	0	0	0	1252	sv		SE
Test	Test	11		1		1	1	0	1252	fi		FI

The first row contains the native language.

The second row is used in every other English locales but in United States, Jamaica and Caribbean.

The second row is used when either English (United States), English (Jamaica) or English (Caribbean) is active. The rest of the rows are used in every sub language of each primary language.

The second last language is Swedish. When it is swicthed on Multilizer changes the font of every form ti Arial.

The last row is a Finnish test language.


Text file translation table format

A text file translation table contains the native string and all its translation string in a single line. Each string is separated by a tabulator character.

Native<tab> [Form<tab> Component<tab>] Language#1<tab> Language#2<tab> Language#N<cr><lf>

where

Item	Description

Native	the native language

Form	the name of the form where the string belongs to. This field is only in the context sensitive dictionary.

Component	the name of the component where the string belongs to. This field is only in the context sensitive dictionary.

Language#1	the first supported language

Language#2	the second supported language

Language#N	the last supported language.

<tab>	the Tab character, h09 (Ansi), h0009 (Unicode)

<cr>	the Carriage return, h0D (Ansi), h000D (Unicode)

<lf>	the Line feed, h0A (Ansi), h000A (Unicode)

Example

Because every field of the dictionary is separated by a Tab character and every Row is ended by the Line Feed and Carriage Return characters, these special characters must be coded:

Special Char	Code

Tab	#T

Line Feed	#L

Carriage Return	#C

#	##

Language Manager stores text dictionaries using the coded format.


Translation table example

The following translation table has the native column is in fake English. There are also five translate columns - US English, English, German, Finnish and Swedish.

Native	Form	Component	US English	English	German	Finnish	Swedish
one	Form1	List1	one	one	eins	yksi	ett
two	Form1	List1	two	two	zwei	kaksi	två
three	Form1	List1	three	three	drei	kolme	tre
meter	Form2		meter	metre	Meter	metri	meter
color	Form2		color	colour	Farbe	väri	färg
firm	Form2	Label1	firm	firm	Geschäft	yritys	företag
firm	Form2	Label2	firm	firm	stark	luja	stark

If the translation does not differ from the native string there is no need to give it. The above table could be written like this:

Native	Form	Component	US English	English	German	Finnish	Swedish
one	Form1	List1			eins	yksi	ett
two	Form1	List1			zwei	kaksi	två
three	Form1	List1			drei	kolme	tre
meter	Form2			metre	Meter	metri	meter
color	Form2			colour	Farbe	väri	färg
firm	Form2	Label1			Geschäft	yritys	företag
firm	Form2	Label2			stark	luja	stark

Note! This is the default behaviour of Multilizer. However you can set it to raise an exception or using an empty string if the translation is missing. See more on the Options property.


Text file locale table format

Locale table contains the locale data. For each supported locale there is a row in the table. The row contains the following data:

Primary<tab> Sub<tab> Locale<tab> EnglishLanguageName<tab> NativeLanguageName<tab> EnglishCountryName<tab> NativeCountryName<tab> CodePage<tab> MeasurementSystem<tab> CurrencyString<tab> CurrencyFormat<tab> NegCurrFormat<tab> ThousandSeparator<tab> DecimalSeparator<tab> CurrencyDecimals<tab> DateSeparator<tab> ShortDateFormat<tab> LongDateFormat<tab> TimeSeparator<tab> TimeAMString<tab> TimePMString<tab> TimeLeadingZeros<tab> TimeFormat<tab> CalendarType<tab> OptionalCalendarType<tab> FirstDayOfWeek<tab> FirstWeekOfYear<tab> ShortMonth1<tab> ShortMonth2<tab> ShortMonth3<tab> ShortMonth4<tab> ShortMonth5<tab> ShortMonth6<tab> ShortMonth7<tab> ShortMonth8<tab> ShortMonth9<tab> ShortMonth10<tab> ShortMonth11<tab> ShortMonth12<tab> LongMonth1<tab> LongMonth2<tab> LongMonth3<tab> LongMonth4<tab> LongMonth5<tab> LongMonth7<tab> LongMonth8<tab> LongMonth9<tab> LongMonth10<tab> LongMonth11<tab> LongMonth12<tab> ShortDay1<tab> ShortDay2<tab> ShortDay3<tab> ShortDay4<tab> ShortDay5<tab> ShortDay6<tab> ShortDay7<tab> LongDay1<tab> LongDay2<tab> LongDay3<tab> LongDay5<tab> LongDay6<tab> LongDay7<tab> WIN16LanguageName<tab> WIN16CountryName<tab> TimeMarkPosition<tab> ISOLanguage<tab> ISOCountry<tab> IsCustom<tab> Charset<cr><lf>

where,

<tab>	Tab character, h09 (Ansi), h0009 (Unicode)

<cr>	Carriage return character, h0D (Ansi), h000D (Unicode)

<lf>	Line feed character, h0A (Ansi), h000A (Unicode)

Example


Locale table example

Load the PERSON demo locale table (PERSON\LOCALE.DB) into the Database Desktop.


Server dictionary

The server dictionary is a dictionary where all the translation data are stored in a dictionary server. You can add new languages - even after the compilation and delivery of the application. Another important advantage is that the dictionary can contain very large translation tables (even tens of thousands of entries) without it dramatically impacting on performance or increasing memory requirements.

A server dictionary uses Multilizer Dictionary Server to store the translation, language and the optional locale tables.

Platform	Component implementation
VCL Visual Basic	TIvServerDictionary
Java	multilizer.ServerDictionary
WFC	multilizer.wfc.ServerDictionary


Database dictionary

The database dictionary is a dictionary where all the tables are stored in a database. You can add new languages - even after the compilation of the application. Another important advantage is that the dictionary can contain very large translation tables (even tens of thousands of entries) without it dramatically impacting on performance or increasing memory requirements.

A database dictionary uses database tables for the translation, language and the optional locale tables.

Database dictionary stores each logical data in a separate database table. The table formats are:

-	Translation table format

-	Language table format

-	Locale table format

It is recommended that you use Language Manager to create and edit desktop database dictionaries.

Platform	Component implementation
VCL	TIvDBDictionary and TIvODBCDictionary
Visual Basic	TIvDBDictionary
Java	multilizer.DatabaseDictionary
WFC	multilizer.wfc.DatabaseDictionary


Database language table format

Database translation table contains the data for one language on each line. The row contains the following fields:

Field	SQL type

EnglishName	VARCHAR(32)

NativeName	VARCHAR(32)

PrimaryId	SMALLINT

SubIds	VARCHAR(32)

DefaultSubId	SMALLINT

FontName	VARCHAR(32)

FontSize	SMALLINT

Options	SMALLINT

Charset	SMALLINT

CodePage	SMALLINT

ISOLanguage	CHAR(2)

ISOCountries	VARCHAR(32)

ISODefaultCountry	CHAR(2)

Multilizer does not access the fields by name but by index. You can use different field names but they must be ordered as above

Example


Database translation table format

The database translation table contains the native string and each of its translation strings in a row. Each column contains strings for one language. The row contains the following fields:

Field	SQL type	Description

Native	VARCHAR	the native language. This field must have a primary unique index

Form	VARCHAR	optional. The name of the form where the string belongs to. This field is only in the context sensitive dictionary.

Component	VARCHAR	optional. The name of the component where the string belongs to. This field is only in the context sensitive dictionary.

Language#1	VARCHAR	the first supported language

Language#2	VARCHAR	the second supported language

Language#N	VARCHAR	the last supported language

Example


Database locale table format

Locale table contains the locale data. For each supported locale there is a row in the table. The row contains the following fields:

Field	SQL type

PrimaryId	SMALLINT

SubId	SMALLINT

LocaleId	INTEGER

EnglishLanguageName	VARCHAR(32)

NativaLanguageName	VARCHAR(32)

EnglishCountryName	VARCHAR(32)

NativeCountryName	VARCHAR(32)

CodePage	SMALLINT

MeasurementSystem	SMALLINT

CurrencyString	VARCHAR(8)

CurrencyFormat	SMALLINT

NegCurrFormat	SMALLINT

ThousandSeparator	CHAR(1)

DecimalSeparator	CHAR(1)

CurrencyDecimals	SMALLINT

DateSeparator	CHAR(1)

ShortDateFormat	VARCHAR(16)

LongDateFormat	VARCHAR(32)

TimeSeparator	CHAR(1)

TimeAMString	VARCHAR(8)

TimePMString	VARCHAR(8)

TimeLeadingZeros	SMALLINT

TimeFormat	SMALLINT

CalendarType	SMALLINT

OptionalCalendarType	SMALLINT

FirstDayOfWeek	SMALLINT

FirstWeekOfYear	SMALLINT

ShortMonth1	VARCHAR(8)

ShortMonth2	VARCHAR(8)

ShortMonth3	VARCHAR(8)

ShortMonth4	VARCHAR(8)

ShortMonth5	VARCHAR(8)

ShortMonth6	VARCHAR(8)

ShortMonth7	VARCHAR(8)

ShortMonth8	VARCHAR(8)

ShortMonth9	VARCHAR(8)

ShortMonth10	VARCHAR(8)

ShortMonth11	VARCHAR(8)

ShortMonth12	VARCHAR(8)

LongMonth1	VARCHAR(16)

LongMonth2	VARCHAR(16)

LongMonth3	VARCHAR(16)

LongMonth4	VARCHAR(16)

LongMonth5	VARCHAR(16)

LongMonth7	VARCHAR(16)

LongMonth8	VARCHAR(16)

LongMonth9	VARCHAR(16)

LongMonth10	VARCHAR(16)

LongMonth11	VARCHAR(16)

LongMonth12	VARCHAR(16)

ShortDay1	VARCHAR(8)

ShortDay2	VARCHAR(8)

ShortDay3	VARCHAR(8)

ShortDay4	VARCHAR(8)

ShortDay5	VARCHAR(8)

ShortDay6	VARCHAR(8)

ShortDay7	VARCHAR(8)

LongDay1	VARCHAR(16)

LongDay2	VARCHAR(16)

LongDay3	VARCHAR(16)

LongDay4	VARCHAR(16)

LongDay5	VARCHAR(16)

LongDay6	VARCHAR(16)

LongDay7	VARCHAR(16)

WIN16LanguageName	VARCHAR(32)

WIN16CountryName	VARCHAR(32)

TimeMarkPosition	SMALLINT

ISOLanguage	CHAR(2)

ISOCountry	CHAR(2)

IsCustom	SMALLINT

Charset	SMALLINT

Multilizer does not access the fields by name but by index. You can use different field names but they must be ordered as above

Example


User dictionary

The user dictionary is a dictionary where all the translation data are aquired through events. It is up to the user to write the event handlers to provide the translation data.

A user dictionary uses events to get the dictionary data.

Platform	Component implementation
VCL Visual Basic	TIvUserDictionary
Java	multilizer.UserDictionary
WFC	multilizer.wfc.UserDictionary


Test dictionary

The test dictionary creates the translation data dynamically from the native strings. The translation data is not real but it is generated based on the dictionary settings. The test dictionary can be used to the application in the desing phase when you might not have the actial translated data available.

Platform	Component implementation
VCL Visual Basic	TIvTestDictionary
Java	multilizer.UserDictionary
WFC	multilizer.wfc.UserDictionary


Bundle dictionary

The bundle dictionary is a dictionary where all the tables are held in multiple files. There is one file for each supported language. Java applications and applets use this dictionary.

Platform	Component implementation
VCL Visual Basic	N/A
Java	multilizer.BinaryDictionary multilizer.TextDictionary multilizer.ResourceDictionary
WFC	multilizer.wfc.BinaryDictionary multilizer.wfc.TextDictionary multilizer.wfc.ResourceDictionary


Ambiguous words

A problem arises when the same native word is used to convey two different meanings, depending on the context in which it is placed. For example, the word ‘firm’ can mean a ‘company’, or ‘hard’. In other languages, separate words may be used to convey the two meanings, but because the dictionary index key must be unique it is not possible to specify the same word twice.

English	Finnish	Swedish

…

firm	yritys	företag

firm	luja	stark

…

Accelerator characters may also create ambiguous words

English	Finnish	Swedish

…

&Open	&Avaa	&Öpna

&Open	A&vaa	Ö&pna

The native strings must be unique. The above cases where there are two native strings with the same value are not possible. There are two solutions for ambiguous words. Either use a fake native language, or insert a space characters after the word.

Using context sensitive dictionaries

Because each keys of the context sensitive dictionary contain the native string, form and component names, they are never ambiguous. Use context sensitive dictionaries if you have several ambiguos words.

Native	Form	Component	English	Finnish	Swedish

…

firm	TForm1	Label1	firm	yritys	företag

firm	TForm1	Label2	firm	luja	stark

…

We recommend to use context sensitive dictionaries in every project.

Using a fake language as the native language

With this technique, the native language is a fake one. For example it can be English whenever an unambiguous word is used but in the case of an ambiguous word the English word must be altered slightly to make it unique.

Native	English	Finnish	Swedish

…

firm	firm	yritys	företag

firm1	firm	luja	stark

…

The first ‘firm’ is unchanged, but the second ‘firm’ is actually ‘firm1’. Use ‘firm1’ in the source of the application whenever you want to refer to firm meaning hard, solid, etc.

We do not recommend this technique except in the cases that the size and speed of the dictionary is the key issue.

Using space characters

Another solution is add space character(s) to the native word or sentence.

English	Finnish	Swedish

…

"firm"	yritys	företag

"firm "	luja	stark

…

The later ‘firm’ contains one space as the last character.

We do not recommend this technique except in the cases that the size of the dictionary is the key issue.


Language Manager

Language Manager is a program that developers and translators use to create, change, translate and edit Multilizer dictionaries and Java’s property files.

What's new

Overview

Multilizer dictionaries

Java’s Property Files

Language Manager is multilingual

Licenses

Dictionary

Native language of the application

Creating a new dictionary using the Dictionary Wizard

Editing the dictionary

Pages

Extracting strings from the source code

Adding strings

Removing strings

Inputting characters

Glossaries

Include strings

The Global Localization Workgroup

Exporting dictionaries using the Export Wizard

Importing dictionaries using the Import Wizard

Sending dictionaries using the Exchange Wizard

Dictionary files

Reference

Command-line parameters


This feature of Language Manager is available only if the ODBC is installed on the system.


This feature of Language Manager is available only if the BDE is installed on the system.


What's new in Language Manager version 4.0
What’s new in version 4

We listened your needs and added several new features to the Language Manager to make it more poweful and easier to use.

The following list contains new or improved features of version 4.0:

-	Only one Language Manager version. It can handle ODBC and BDE databases if they are installed on the system.

-	Context sensitive and distributed dictionaries

-	Glossaries

-	Support for Java’s property files. Language Manager can be used to edit and translate Java’s property files (PropertyResourceBundle).

-	Supports both UCS-2LE/UTF-16LE and UCS-2LE/UTF-16BE Unicode file formats. The previous version supported only the little endian Unicode (UCS-2LE/UTF-16LE).

-	Supports Microsoft Glossary File format

-	Printing support. You can print dictionaries or part of them.

-	Creates dictionaries also for MULTILIZER WFC Edition.

-	Enhanced support for JBuilder.

-	Shows and edits multiline strings.

-	Improved undo/redo. Undos typing in the cell as well.

-	Improved scan options. You can set Language Manager to scan all subdirectories of a directory, exclude scanning of individual files, etc.

-	LMP, MLP and MLD file have been registered. This means that you can start LM just double clicking the project file in the Explorer.

-	Language Manager is multilingual


Overview

Language Manager is a program that developrers and translators use to create, change, translate and edit Multilizer dictionaries and Java’s property files.

-	Language Manager creates the dictionary for your application.

-	It extracts strings from the source code and adds them to the dictionary.

-	You can add strings manually to the dictionary.

-	You can also remove strings from the dictionary.

-	Language Manager also edits Java’s property files.

-	Language Manager lets you or your translator edits dictionaries, fill up the translations languages, add and remove languages to the dictionary.

-	You can send a sub project to your translator. Later you can import the translated data back to the project.

Language Manager deals with projects. Each project contains application information such as the source files and the dictionary data of the application.

Language Manager contains a powerful translation memory that uses glossaries. They are files that contain the most common strings and phrases. At any time you can set Language Manager to translate the strings that are found from the glossaries.

Architecture

The following picture contains the items that Language Manager uses or works with:

Language Manager reads the source code of your project extracting strings from the source and adding them to the dictionary or to the resource bundle. Multilizer contains several kinds of dictionary formats. Language Manager can create and edit all of them.

Language Manager uses TCP/IP to access Dictionary Server; ODBC or BDE to access database dictionaries, and database glossaries.


Multilizer Dictionaries

Language Manager creates, edits and translates the Multilizer dictionaries. Multilizer isolates all translation data to a single storage, called dictionary. This contains the translations in every supported language.

Learn more about dictionaries.


Java's Property Files
Java’s Property Files

Language Manager edits and translates the standard property files of Java. If you do not use the Multilizer components in Java but you use the JDK’s PropertyResourceBundle you can still use Language Manager to edit and translate the property files.

A property resource bundle is a resource bundle that is based on a property file. This kind of bundle is useful for storing text. The following sample contains a two-item property resource bundle.

Car=Auto

House=Talo

Java’s PropertyResourceBundle class implements property resource bundles.

To create a new Property resource bundle project:

1.	Choose File | New… menu.

2.	Press the Next button to enter to the Source sheet.

3.	Select the directory where the *.properties files are located. You must create at least one property file manually or let your Java IDE to create it.
You can later add new directories by choosing Project | Scan Files… menu.

4.	Check the Resource bundle radion button.

You can later add new languages or sub language, or remove the old ones by choosing Project | Languages… menu.

Naming Convention

Property resource bundles use the following naming convention:

familyname[_language[_country[_variant]]].properties

For example

Property File	Description
sample_en_US.properties	Contains strings for English (United States) locale
sample_en.properties	Contains strings for English locales
sample_fi.properties	Contains strings for Finnish locales
sample.properties	Contains strings for all locales


Language Manager is multilingual

Language Manager is multilingual supporting currently English and Finnish.

Multilingual Language Manager demonstrates how powerfull Multilizer is. Language Manager was globalized using Multilizer VCL Edition 4.1 and Language Manager 4.0. The total work need was only one week:

-	2 days to internationalize the Language Manager code (e.g. wraping hard coded strings, making more space to the form, etc)

-	2 days to translate the dictionary to Finnish (2000+ words)

Adding a new language to LM would only take 2 days because the internationalization needs to be done only once. The EXE file need not to be recompiled on changed any way.

The dictionary project for Language Manager is included so you can translate Language Manager to your own language. Just open the langman.lmp into Language Manager, add your language and translate the strings.


Licenses

Multilizer use product based license policy. This means that each Multilizer edition (VCL, VB, Java, etc) grants Language Manager to create projects for that edition. If you have several Multilizer editions installed on the computer then Language Manager can edit several kinds of projects.

Language Manager recognizes the following products:

Edition	Description

VCL Edition	Grants Language Manager to create and edit all Delphi and C++Builder projects.

Visual Basic Edition	Grants Language Manager to create and edit all Visual Basic projects.

Java Edition	Grants Language Manager to create and edit all Java and Property files projects.

WFC Edition	Grants Language Manager to create and edit all Visual J++ projects.

Linguist’s Edition	Grants Language Manager to translate all projects.

License type

Each Multilizer product can have one of the following license types:

License	Description

Professional	All features are available.

Standard	All features except editing of Middle-Eastern and Far-Eastern languages are available.

Evaluation	Like the Professional license except the application works only 30-days after installation. Contains only English and Finnish glossaries.

Limited	Like Standard license but the maximum dictionary size is 1500 strings and the maximum language count is 3. The glossary contains only English and Finnish.

If you own certain developers tool (e.g. C++Builder 4 or JBuilder 3) you are entitled to install the limited edition.

Not available in the Language Manager Linguist’s Edition.


Dictionary

The underlying concept behind Multilizer is to iterate each child component of the form, and translate their Labels, Hints, Text... to another language. The translation is made by finding the corresponding string from the lookup table and replacing that string with the new one. The lookup table is called the translation table, and contains strings for each language that the application uses.

In addition to the translation table, Multilizer (and Windows) require information about the current language. To provide this information, each dictionary contains another table called the language table, which contains information about the languages the dictionary contains. For every column in the translation table there must be a row in the language table (in the same order). The first row of the language table is the first column of the translation table and so on. The language table contains the native name of the language and the name in English. The table also contains the primary language id and the sub ids and the default font of the language.

Simply switching between languages is not always the only requirement of a multilingual program. The program may have to adapt to some local customs and standards such as date and time formats, currency and measurement system. To provide this facility, Multilizer uses locale data. Different environments use the locale table in different ways:

Environment	Description
Delphi (32-bit) C++Builder Visual Basic (32-bit) WFC HTML	Uses Win32 NLSAPI to get the locale information. Can contain a locale table. The dictionary component uses the locale table only if it fails to find the data from the NLSAPI. The demo program, for example, uses a custom locale table, which contains one locale Swedish (Finland). Windows 95 lacks support for this locale so it is included into the locale table. When run under Windows NT 4.0 (that supports the locale), the system locale is used instead of the custom locale.
Delphi (16-bit) Visual Basic (16-bit)	Need a third table called the locale table.
Java	Java applications use the locale data provided by Java library. They do not use the locale table.

These three tables have been include into a dictionary component.

A dictionary contains the translation, the language and the optional locale table.

Typically there is only one dictionary for the whole application. This means that all the forms uses the same dictionary sharing the same translation tables. However it is possible to use a separated dictionary for each form or for some forms.

The dictionary format can be either flat or context sensitive.

Flat dictionary

This is the simplest dictionary format. The translation key is the only the string value. This means that all instanses of a string are always translated with the same value.

Context sensitive dictionary

In context sensitive dictionary the context of the string is used to select the right translation.

Dictionary types

Multilizer contains several kinds of dictionary types:

-	binary dictionary

-	text dictionary

-	bundle dictionary

-	server dictionary

-	database dictionary

-	user dictionary

-	test dictionary

If none of the above dictionary types meet your requirements you can derive your own dictionary from the abstract dictionary component.

Choosing the right dictionary.


Native language of the application

Multilizer lets you any native language. This is the human language that you use to write your aspplication. By default Language Manager contains English glossaries and English include string files.

French and German

The glossary data and the string files are available in French and German versions as well. You can get them from the Multilizer’s web site (http://www.multilizer.com/support).

For example, if you use French (or German) Delphi all the BDE and system messages are in French (or German). In that case you have to add the VCLFrXX.mld (or VCLGeXX.mld) files to the glossary instead of VCLEnXX.mld.

Other languages

If the native language of your application is any other you have to create the glossary data from scratch and you also have to translate the string files (*.lms) manually.

Common dialog component

The native language of common dialog componenst is always US English. So even if every form in your application is written in French and all native language of other rows in the dictionary are in French, the dictionary must contains English native strings for common dialog components.

The commdlg.lms file contains the US English strings of the common dialog componnets. Do no alter or translate that file.


Creating a new dictionary using the Dictionary Wizard

Choose File | New… menu. This starts the Dictionary Wizard that helps you to easily create a new dictionary. The wizard collects the project-related data from you and guides you to create a new dictionary.

The tool automates such project building tasks as:

-	Selecting the source directory

-	Selecting the dictionary type

-	Selecting the languages used in the dictionary


Editing the Dictionary

The picture below shows the workplace of Language Manager.

Tool bar

The tool bar contains speed buttons:

	File | Open
	File | Save
	Edit | Find
	Edit | Next Incomplete Item
	Project | Update

A combo box that lets you select the visibple page. If this is All then all the strings of the dictionary are visible. If you select any other only the strings belonging to the selected page are shown.

	A spin button that can be used to step to the next or previous page.
	Edits or shows the pageinformation (e.g. decription and image)
Flag bar

The flag bar is on the left side of the grid. If contains row flags. The possible flags are:

	Red dot. The row is incomplete. You haven’t filled up all the cells of the row.
	Green dot. The string or phrase exists in the glossary.
	Two blue dots. The row is not found from the source code. It is likely that the application doesn’t use the string any more. You can delete the string by selecting any cell of the row and pressing Ctrl-Del.
If you move the cursor on the flag bar Language Manager pops up a hint window the source(s) of the native string. Note! There might be several of them.

The above hint window tells that the string is located on one forms: in the Caption property of the FileCloseItem menu item in the MAIN.DFM file, and in the Include string grpup: System Strings , System Menu

Each row has a popup menu. You can access the menu by pressing the right mouse button on the flag bar of the grid.

Comment bar

The comment bar is on the right side of the grid. It indicates if the row contains a comment. The possible flags are:

	Red dot. The row contains a comment. You can view the comment by moving the mouse on the red dot. You can edit the comment by choosing Translation | Comment menu item.
Status bar

Status bar shows the selected cell, dirty flag and the message area.

Grid

The gird contains the dictionary strings. Each column contains the strings of one language. Each row contains the string and a translation for each supported language.

Each cell has a popup menu. You can access the menu by selecting the cell and pressing the right mouse button.

You can start editing the contents of a cell by double clicking the cell with the mouse or pressing the F2 key.

You can stop editing the contents of a cell by clicking outside the cell with the mouse, pressing the F2, UP, DOWN or TAB key. If the edited string (or the native string) contains several lines you have to press Ctrl+UP, Ctrl+DOWN, or Ctrl+TAB.

If the system can not input the character used by the language, the cells of the language are dark grayed. For example you need to have the Japanese version of Windows to input Japanese.

If the row has been marked as “Do not translate” the cells of the row are grayed.

Because Language Manager extracts the string data from the application and stores in a centralized table, dictionary, it is sometime hard to figure out the logical context of a string. If you are unaware of the context just move the cursor on the beginning of the row. Language Manager pops up a hint window containing the source(s) of the string (Note! There might be several of them).

Each language (column) has a popup menu. You can access the menu by pressing the right mouse button on the header area on the top of the grid.


Pages

When the translator translates the strings of a user interface item it is essential that he or she can find the logical context of the string. To make this easier Language Manager provides the following features

String source

When the mouse is moved on the gray side bar of the row, a pop windows appears telling the source of the string.

Visible page

The user can set Language Manager show only the strings belonging to sertain user interface item. Language Manager groups the strings of every form and include string to a page. You can use the following combo box to change the visibple page:

Page infromation

In some cases the translator can not figure out the right context even after setting the right page visible and checking the source information. The developer has two choices to give more help for the translator:

-	Deploying the application EXE file to the translator and writing information how to show each form.

-	Adding the screen shots about the forms.

Use the Page dialog box to input the page descriptions and images.


Page dialog box

The Page dialog box is used to edit page related information.

Name

The name of the page. If you leave the field empty the file name of page’s source code is used.

Description

Any textual description about the page.

Images

You can add images for the page. These can be for example screen shots about the form. The images will help the translator figure out the context of the strings.


Page Information dialog box

The Page Information dialog box shows the translator infromation about the page.


Extracting Strings from the Source Code

The most powerful feature of Language Manager it is ability to scan the source code and find new string to the dictionary. Choose Project | Update to scan the application.

When the Dictionary Wizard creates a new dictionary it assigns one source directory and detects the default scan properties. Choose Project | Scan Files to change these settings.


Adding Strings

Normally the scanning feature of Language Manager finds and inserts strings to the dictionary. However you can also add string to the dictionary using two other ways: adding strings manually, adding strings to the project, and adding include string.

Adding Strings Manually

Language Manager lets you manually add new row to the dictionary. Choose Edit | Add Row or Edit | Insert Row to add a new row. The first append the row at the end of the dictionary and the later adds the row to the current location.

Adding Strings to the Project

Adding a string manually to the dictionary does not make the string used. This may confuse the author that might remove the string from the dictionary. To add a string or strings to the dictionary and mark the used at the same time use the Project Strings dialog box. Choose Project | Include | Project Strings.

Adding Include Strings

Language Manager can use include-string files. They contain the native strings of such kind of components that Language Manager can not scan.

Learn more about the include strings.


Removing Strings

Language Manager does not automatically remove any rows from the dictionary. You can remove rows from the dictionary in two ways.

Removing strings manually

Select any cell of the row you want to delete and choose Edit | Delete Row. This removes the row from the dictionary.

If the gray on the left of each row contains a blue dot, the string does not belong to the project any more. You can remove it.

Removing unused strings

You can remove all the unused string by choosing Project | Remove Unused Strings menu.

Excluding strings

The manual removing of a string works fine if the string does not exists in the source code. However, the rescanning of the project adds the string again to the dictionary. To prevent that you can exclude the string from the dictionary. Choose Edit | Exclude Row to exclude one string. You can also exclude many string simultaneously by choosing Project | Exclude Strings.


Inputing Characters
Inputting Characters

Language Manager is a powerful text editor that you can use to edit all kind of scripts. It automatically sets the fonts, character sets, and the input method editor (IME) to match the language you are typing in.

Most European languages use accented or diacritic characters. Typing in those characters using a Standard English keyboard might be quite hard or even impossible. To make inputting of characters as easy as possible Language Manager uses three ways to input none-ASCII characters.

1.	Character composing

2.	Keyboard layout changing

3.	Localized Windows versions

The following table contains the available methods for the most common languages:

Language	Character composing	Keyboard layout changing	Localized Windows versions
Afrikaans	yes	Yes
Albanian	-	NT	Windows 95 Pan European
Arabic	-	-	Windows NT 4.0 Arabic or Windows 95 Arabic
Basque	yes	yes
Belarussian	-	NT	Windows 95 Russian
Bulgarian	-	NT	Windows 95 Russian
Catalan	yes	yes
Chinese (Simplified)	-	-	Windows NT 4.0 Simplified Chinese, Windows NT 4.0 Pan Chinese or Windows 95 Simplified Chinese
Chinese (Traditional)	-	-	Windows NT 4.0 Traditional Chinese, Windows NT 4.0 Pan Chinese or Windows 95 Traditional Chinese
Croatian	yes	NT	Windows 95 Pan European
Czech	yes	NT	Windows 95 Czech or Pan European
Danish	yes	yes
Dutch	yes	yes
English	yes	yes
Estonian	yes	NT	Windows 95 Pan European
Faeroese	yes	yes
Farsi	-	-	Windows NT 4.0 Arabic or Windows 95 Arabic (not fully supported)
Finnish	yes	yes
French	yes	yes
German	yes	yes
Greek	-	NT	Windows 95 Greek
Hebrew	-	-	Windows NT 4.0 Hebrew or  Windows 95 Hebrew
Hungarian	yes	NT	Windows 95 Hungarian or Pan European
Icelandic	yes	yes
Indonesian	yes	yes
Italian	yes	yes
Japanese	-	-	Windows NT 4.0 Japanese or Windows 95 Japanese
Korean	-	-	Windows NT 4.0 Korean or Windows 95 Korean
Latvian	yes	NT	Windows 95 Pan European
Lithuanian	yes	NT	Windows 95 Pan European
Norwegian	yes	yes
Polish	yes	NT	Windows 95 Polish or Pan European
Portuguese	yes	yes
Rhaeto-Romanic	yes	yes
Romanian	yes	NT	Windows 95 Pan European
Russian	-	NT	Windows 95 Russian
Serbian	-	NT	Windows 95 Russian
Slovak	yes	NT	Windows 95 Pan European
Slovenian	yes	NT	Windows 95 Pan European
Spanish	yes	yes
Swedish	yes	yes
Thai	-	-	Windows NT 4.0 Thai or Windows 95 Thai
Turkish	yes	NT	Windows 95 Pan European
Ukrainian	-	NT	Windows 95 Russian
Vietnamese	-	-	Windows 95 Vietnamese
If the Localized Windows version column is left empty you can use any Western Windows 95 or Windows NT 4.0 to edit the language strings.

Windows 2000 can be used to edit all languages.


Character Composing

Typing accented characters (e.g. é, ä and ö) in can be problematic, at least if you have an English keyboard layout. A none-English keyboard layout has been designed to input accented character of the language of the keyboard layout. However, it is quite hard or even impossible to type the accented characters of other languages.

To make it easy to type accented and extended character, Language Manager contains a feature called the character composition. You start character composing by typing the compose key (Right-Ctrl). When in the composing mode you first type the none-accented character following the accented character.

For example let’s type Ö character:

1.	Enter to cell edit mode (double click a cell or press F2)

2.	Press the Right-Ctrl key to enter into the composed mode.

3.	Press the O key.

4.	Press the “ key. Language Manager exits from the compose mode and replaces the typed O character with the Ö character.

After typing the first compose character you can get a list of available characters by pressing the Down key. If you press the Down key before you have type any character you are going to get a list of all accented and extended characters of the current language.

To view the character combinations of each accented character look at the Compose Strings dialog boxes.

Character composing lets to input all the accented and extended character of all Latin character sets (Western, East Europe, Baltic and Turkish). To type none Latin characters you have to use either the keyboard layout changing or a localized Windows versions.

Character composing is a handy feature if you only need to input rather small amount of text. If you have to input accented characters frequently you have better to use Keyboard Layout Changing.


Keyboard Layout Changing

Windows 95 and Windows NT 4.0 have ability to use multiple keyboard layouts.

Each time you select a cell of the column Language Manager checks if a keyboard layout for that language has been installed. If the layout has been installed the program switches that keyboard layout on.

To add a new keyboard layout:

1.	Open the Control Panel.

2.	Double click the Keyboard icon. The Keyboard Properties dialog box appears.

3.	Select the Input Locales sheet.

4.	Press the Add button. The Add Input Locale dialog box appear.

5.	Select the keyboard layout and press the OK button to close the dialog box.

6.	Press the OK button to close the Keyboard Properties dialog box.

You can use the keyboard layout changing for all single byte character sets. To type bi-directional or multi byte characters you have to use the localized Windows versions.


Localized Windows Versions

Any western Windows NT 4.0 can edit every European language. To edit dictionaries containing a bi-directional or a multi byte language(s) you need to run Language Manager on the localized version of Windows.

The following table contains the localized versions that you need:

Language	Windows version
Arabic	Windows 2000, Windows NT 4.0 Arabic, or Windows 95 Arabic
Chinese (Simplified)	Windows 2000, Windows NT 4.0 Simplified Chinese, Windows NT 4.0 Pan Chinese, or Windows 95 Simplified Chinese
Chinese (Traditional)	Windows 2000, Windows NT 4.0 Traditional Chinese, Windows NT 4.0 Pan Chinese, or Windows 95 Traditional Chinese
Hebrew	Windows 2000, Windows NT 4.0 Hebrew, or  Windows 95 Hebrew
Japanese	Windows 2000, Windows NT 4.0 Japanese, or Windows 95 Japanese
Korean	Windows 2000, Windows NT 4.0 Korean, or Windows 95 Korean
Thai	Windows 2000, Windows NT 4.0 Thai, or Windows 95 Thai
Vietnamese	Windows 2000, or Windows 95 Vietnamese
Windows 2000 can be used to edit all languages.


Glossaries

Glossaries are dictionaries that store translations that can be shared between applications.

Language Manager can get translations from the glossary to the application dictionary and vice versa. This makes it possible to recycle translation efforts to the other projects. After a few projects you have to translate only the application specific strings - Language Manager translates all the standard strings. To translate current dictionary using the glossary choose Project | Translate. This translates every language column of the dictionary. To translate just a single language, choose Language | Translate.

Language Manager contains two kinds of glossaries:

Custom Glossaries

Read-only Glossaries


Custom Glossaries

The custom glossary is a glossary that contains your own glossary items. You can add new items and language to the glossary. You can also remove items and languages from the glossary. The custom glossary strings are stored in local files or database tables.

By default the custom glossary is an empty local file. You can add new items and languages to the custom glossary in following ways.

Adding a dictionary row to the glossary

You might have a string in your dictionary that would be used in other dictionary as well. To make it possilbe, move it to the glossary:

1	Move mouse on the gray area on the left side of the row and press the right mouse button.

2	Choose Add to Glossary or press Ctrl-M

If the gray area contains a green dot, the string already exist on the custom glossary. Then there is not need to add it.

Importing a new language to the glossary

To import data to the custom glossary:

1	Choose File | Glossary to open the glossary.

2	Choose File | Import. The Import Wizard dialog box appears.

3	Select MLD File. Press the Browse button. Choose the glossary file that you want to import. For example if you want to import German glossary file, choose german.mld.

4	Choose File | Save to save the glossary.

Editing the glossary

To edit the custom glossary:

1	Choose File | Glossary to open the glossary.

2	Type the translations of add new rows.

3	Choose File | Save to save the glossary.

Copying the custom glossary to another location

By default the glossary is located in the local files. To copy the glossary to another location:

1.	Choose File | Glossary to open the glossary.

2.	Choose File | Save As. The Custom Glossary dialog box appears.

3.	Select the Locale File type.

4.	Type the new values to the Glossary file and Locale file fields.

5.	Press OK to close the Custom Glossary dialog box.

Copying the custom glossary to a local BDE database

If you use Language Manager for BDE, you can copy the glossary to a locale database:

1.	Create a database.

2.	Make a BDE alias for the database.

3.	Choose File | Glossary to open the glossary.

4.	Choose File | Save As. The Custom Glossary dialog box appears.

5.	Select the Database Tables type.

6.	Press OK to close the Custom Glossary dialog box.

Switching to another custom glossary

You can also change the active custom glossary. This is useful in the cases where you have multiple custom glossaries. One for each kind of project type.

To chnage the custom glossary:

1.	Choose Tools | Custom Glossary. The Glossary dialog box appears.

2.	Select the dictionary type by choosing the corresponding sheet.

3.	Press OK to close the Options dialogs box.


For example, if you want many programmers share the same custom glossary you can move the tables to a server based database engine (e.g. InterBase, Oracle, and SQL Server).


Read-only Glossaries

There can only be one active custom glossary at the time. However there an be multiple active read-only glossaries. They are glossaries that are used to translate your dictionires.

By default Language Manager contains two types of glossaries: common strings and VCL strings.

Common Strings

The following list contains the available glossary files that contains common user interface strings:

Dictionary File	Description

arabic.mld	 Arabic

catalan.mld	Catalan

chinese_s.mld	 Simpified Chinese

chinese_t.mld	 Traditional Chinese

czech.mld	Czech

danish.mld	Danish

dutch.mld	Dutch

finnish.mld	Finnish

french.mld	French

german.mld	German

greek.mld	Greek

hebrew.mld	 Hebrew

hungarian.mld	Hungarian

italian.mld	Italian

japanese.mld	 Japanese

korean.mld	 Korean

norwegian.mld	Norwegian

polish.mld	Polish

portuguese_b.mld	Brazil Portuguese

portuguese_p.mld	Portuguese

russian.mld	Russian

spanish.mld	Spanish

swedish.mld	Swedish

turkish.mld	Turkish

The native strings of these glossary files are English.

VCL and BDE Strings

The following list contains the available glossary files that contains VCL and BDE strings:

Dictionary File	Description

VCLEnDa.mld	Danish (English native)

VCLEnDu.mld	Dutch (English native)

VCLEnFi.mld	Finnish (English native)

VCLEnFr.mld	French (English native)

VCLEnGe.mld	German (English native)

VCLEnIt.mld	Italian (English native)

VCLEnPo.mld	Portuguese (English native)

VCLEnSp.mld	Spanish (English native)

VCLEnSw.mld	Swedish (English native)

VCLFrDa.mld	Danish (French native)

VCLFrDu.mld	Dutch (French native)

VCLFrEn.mld	English (French native)

VCLFrFi.mld	Finnish (French native)

VCLFrGe.mld	German (French native)

VCLFrIt.mld	Italian (French native)

VCLFrPo.mld	Portuguese (French native)

VCLFrSp.mld	Spanish (French native)

VCLFrSw.mld	Swedish (French native)

VCLGeDa.mld	Danish (German native)

VCLGeDu.mld	Dutch (German native)

VCLGeEn.mld	English (German native)

VCLGeFi.mld	Finnish (German native)

VCLGeFr.mld	French (German native)

VCLGeIt.mld	Italian (German native)

VCLGePo.mld	Portuguese (German native)

VCLGeSp.mld	Spanish (German native)

VCLGeSw.mld	Swedish (German native)

The VCL and BDE string a provided in nine European languages. For each language there is three version: English, French and German. This is because English Delphi and C++Builder use English resource strings, French Delphi and C++Builder use French resource strings, and German Delphi and C++Builder use German resource strings.

If you use English Delphi or C++Builder, you can remove all VCLFr*.mld and VCLGe*.mld glossaries. Similary you can delete the English and French glossary files if you use German Delphi or C++Builder.

Evaluation vs. Registered version

The evaluation or bundle versions contains only the English and Finnish glossary files. You need to purchase the registered version to get the other glossary files.

Microsoft Glossary Files

Language Manager can use Microsoft Glossary File (CSV). MSDN Development Platform, Intl, disk 1 contains clossaries in all Windows languages. These glossary files contains translation memory of most Microsoft products.

Other Glossary Files

Language Manager can use almost any kind of glossary files that are text files. This helps you leverage the translation memory of other translation tools.

Adding new glossaries

Adding a new glossary to the glossary list is easy.

1.	Choose Tools | Glossaries. The Glossaries dialog box appears.

2.	Press the Add button. The Glossary dialog appears.

3.	Select the glossary type and the glossary file or table.

4.	Press OK to close the Glossary dialog box.

5.	Press OK to close the Glossaries dialog box.


If you have a registered Language Manager version, check http://www.multilizer.com/support to get the most resents glossary files.


Include Strings

Normally Language Manager scans all source code of the application to find strings to be translated. However in some situation the source code is not available or the application uses component with hard coded strings. In these situations Language Manager can not extract the strings but they must be added manually to the dictionary. To make this automatic Language Manager contains include string files. They contain the native strings of the standard component.

By default Language Manager contains the following include string files:

1stClass Strings

Dialog Strings

System Strings

Adding new include string files

You can add your own include string files by creating a text file with the '.lms' extension and placing it on the Language Manager directory.

The first line of the file has the following format:

name<tab>[D16 ][D32 ][CB ][VB16 ][VB32 ][WFC ][JAVA ][JB ]

where

name	is the name that appears in the Project | Include | XXXX menu.

<tab>	is a tab character (9h).

D16	this is available for 16-bit Delphi applications.

D32	this is available for 32-bit Delphi applications.

CB	this is available for C++Builder applications.

VB16	this is available for 16-bit Visual Basic applications.

VB32	this is available for 32-bit Bisual Basic applications.

WFC	this is available for WFC applications.

JAVA	this is available for Java applications.

JB	this is available for JBuilder applications.

The next lines contains the actual include strings:

group<tab>value<tab>[D16 ][D32 ][CB ][VB16 ][VB32 ][WFC ][JAVA ][JB ]

where

group	is the name of the string group. The strinsg are added to the project in groups.

value	is the value of the string.

None-English Native Language

If your native language is not US English you must translate the .LMS files that were shipped with Language Manager from US English to the language that your use.


HTML	this is available for HTML pages.


Dialog Strings

The Dialog Strings include string file contains the strings used by the multilingual common dialog components.

By default it contains the following groups:

Open

Adds the strings used by the old style TOpenDialog component.

Save

Adds the strings used by the old style TSaveDialog component.

Color

Adds the strings used by the TColorDialog component.

Font

Adds the strings used by the TFontDialog component.

Print 16

Adds the strings used by the 16-bit TPrintDialog component.

Print 32

Adds the strings used by the 32-bit TPrintDialog component.

Printer 16

Adds the strings used by the 16-bit TPrinterSetupDialog component.

Printer 32

Adds the strings used by the 32-bit TPrinterSetupDialog component.

Page Setup

Adds the strings used by the TPagesSetupDialog component.

Find

Adds the strings used by the TFindDialog component.

Replace

Adds the strings used by the TReplaceDialog component.

Explorer Open

Adds the strings used by the explorer style TOpenDialog component.

Explorer Save

Adds the strings used by the explorer style TSaveDialog component.

Open Picture

Adds the strings used by the TOpenPictureDialog component.

Save Picture

Adds the strings used by the TSavePictureDialog component.


System Strings

The System Strings include string file contains the strings used by some VCL components, and Multilizer's language and locale selecting dialogs

By default it contains the following groups:

Countries

Adds the names of the most common countries.

DB Navigator

Adds the strings used by the hints of the TDBNavigator component.

Language Dialog

Adds the strings used by the language dialog of the SelectLanguage methods.

Languages

Adds the names of the most common languages.

Locale Dialog

Adds the strings used by the language dialog of the SelectLocale method. You should also select the Countries and Languages groups to add the country and languages names.

Message box

Adds the strings used by the IvMessageBox and IvMessageBoxPos functions.

Select Directory

Adds the strings used by the IvSelectDirectory functions.

Sublanguage Dialog

Adds the strings used by the sublanguage dialog of the SelectSublanguage methods.

System Menu

Adds the system menu items.


1stClass Strings

The 1stClass Strings dialog box contains the strings used by 1stClass.

By default it contains the following groups:

Standard Colors

Adds the English names of the standar colors, such as “White“, “Black“.

System Colors

Adds the English names of the system colors, such “ButtonFace“.

None Colors

Adds the English names of the none colors, such as “None“.


The Global Localization Workgroup

Multilizer supports the whole localization cycle and team. The Global Localization Workgroup (GLW) model gives developers and linguists an extremely cost-effective and flexible working environment.

This chapter describes how to GLW works. In many times there is more than one person working with your dictionary. Your local resellers might translate your program to the local language. To make it possible for multiple person to work simultaneously with the dictionary there must be a way to break the dictionary into the pieces and finally to combines all the translations to a single dictionary.

Let’s have an example where you want to translate your program to English, German and Japanese. Your native language is English but you do not speak German or Japanese. That’s why you let the local reseller or a professional translator to translate the application to the locale languages.

The following paragraphs describe each steps.

1) Create the project dictionary

At first you create an empty dictionary:

1.	Choose File | New. The Dictionary Wizard appears.

2.	Press the Start button. The Source Directory page appears. Select the directory where the application locates.

3.	Press the Next button. The Project Information page appears. Type sample to the project name field.

4.	Press the Next button. The Dictionary Type page appears. Select Binary sheet.

5.	Press the Next button. The Languages page appears. Double click “English” string at the “Available languages” list box. The English line appears to the “Selected Languages…” list box. Add German, Russian, and Japanese in the same way.
Note! Japanese is available only if you have the professional edition.

6.	Press the Next button. The Finish page appears.

7.	Press the Finnish button to close the Dictionary Wizard. Language Manager scans the source files.

8.	Choose File | Save as. The Save As dialog box appears.

9.	Press OK to close the dialog box.

You will now have an empty dictionary containing English, German, Russian, and Japanese.

At first you will have an empty dictionary.

2) Translate the language(s) that you can speak

If some of the languages in the dictionary is your mother language, or your can speak that language good enough, your can translate the column yourself.

The dictionary contents after you have translated the English column.

The next step is to make a German exchange dictionary and send it to the translator.

3) Send the German dictionary to the translator

You could send the whole dictionary to your German translator but the is no point for that. Instead we create a German sub dictionary containing only German column.

1.	Choose File | Send to | Translator. The Exchange Wizard appears. Select German from the Languages.

2.	Press the Next button. The Dictionary page appears.

3.	Press the Next button. The Language Manager page appears. If this is the first time that you send a dictioanry to your German translator you can include the Language Manager to the exchange package.

4.	Press the Next button. The Include files page appears.

5.	Press the Finish button to create the German exchange package.

6.	Finally email German.exe to your translator.

You sent the German dictionary to your German translator.

4) Send the Japanese dictionary to the translator

Send the Japanese dictionary in the similar way to your Japanese translator.

5) Your German translator installs the German exchange package

Your German translator install the exchange package. This installs the Language Manager and the German dictionary.

6) Your Japanese translator installs the Japanese exchange package

Your Japanese translator install the exchange package. This installs the Language Manager and the Japanese dictionary.

7) Your German translator translates the German dictionary

Your German translator uses Language Manager to translate the German dictionary.

8) Your Japanese translator translates the Japanese dictionary

Your Japanese translator uses Language Manager to translate the Japanese dictionary.

9) Your German translator sends you back the German dictionary

After your German translator has completed the translation she emails the dictionary file (german.mld) back you your.

You got the translated German dictionary back from the distributor.

Now it is time to merge the German dictionary to the project dictionary.

Importing means merging two dictionaries. In this case you merge the German dictionary to the current dictionary.

1.	Choose File | Import. The Import Wizard appears

2.	Select MLD Files. Browse the german.mld file. Press the Next button.

3.	Select German and press the Finish button.

The dictionary now contains English and German translations.

10) Your Japanese translator sends you back the Japanese dictionary

Import also the Japanese dictionary to the project dictionary. Now your dictionary is complete.

Finally your dictionary contains all three languages.


Exporting a dictionary using the Export Wizard

Choose File | Export… menu to open the Export Wizard. The wizard helps you easily export a sub dictionary. The wizard collects the dictionary-related data from you and guides you to create a new Language Manager project.

The tool automates such project building tasks as:

-	Selecting the export properties

-	Selecting the dictionary type


Importing a dictionary using the Export Wizard
Importing a dictionary using the Import Wizard

Choose File | Import… menu to start the Import Wizard. The wizard helps you easily import (merge) another dictionary to the current one. The wizard collects the dictionary-related data from you and guides you to import the dictionary.

The wizard automates such project building tasks as:

-	Selecting the source dictionary

-	Choosing the import properties


Source Directory (Import Wizard)

Select the dictionary type and fill up the required fields.

Press the Next button to proceed.


Properties (Import Wizard)

Select the dictionary type and fill up the required fields. Press the Next button to proceed

The Languages list box contains the language that will be imported. By default all the languages are selected. Unselect the language(s) that you don’t want to import.

Select the overwrite method. The possible values are:

Value	Description

Always	Always overwrites existing data. If both the current dictionary and the import dictionary contain the same translation (e.g. the same native string). The result dictionary will contain the cells of the import dictionary.

If source is not empty	Overwrites if the source string is not empty. Same as above but if the import cell is empty the current value is used in the result dictionary.

Prompt if different	If the current is not empty and it differs from the imported one, Language Manager prompts user to accept the import.

If destination is empty	Default. Overwrites if the current string is empty. The import cells are copied to the result dictionary only if the current cell is empty.

Never	Never overwrites existing data. The current cells are never overwritten. Only adds new languages and new rows (see below).

Check the “Add new rows” check box if you want to add new rows to the dictionary. If this not checked the result dictionary contains only the rows of the current dictionary even if the import dictionary contained more rows.

Press the Finish button to import the dictionary.


Sending dictionaries using the Exchange Wizard

Choose File | Send | To Translator menu to create an exchange package. It is either a self-extracting file that installs the dictionary and the Language Manager to your translator's computer, or a compressed file that contains the dictionary files.

The wizard automates such project building tasks as:

-	Selecting the languages

-	Getting the information for the dictionary

-	Including the Language Manager

-	Viewing the included files

-	Create the package file


Languages (Exchange Wizard)

Select the language(s) that you want to send to the translator.


Dictionary (Exchange Wizard)

Type the name of the package, description of the package, and your name.

Include application’s EXE file

When translating the application the translator will most likely want to test the translations on action. To make this possible you and include applications’s EXE file to the exchange package.

If the application does not use the binary dictionary, replace the current dictionary with the binary dictionary before creating the package.

If the application’s EXE files requires a setup application do not check the check box but add the setup file later in the Included Files sheet.


Language Manager (Exchange Wizard)

You can include Language Manager to the exchange package. This makes the package install Language Manager to the target computer.

Language Manager

Check this if you want to include Language Manager to the package.

Language Manager manual in Adobe Acrobat format

Check this if you want to include the Language Manager manual in Adobe Acrobat format.

Glossary

Check this if you want to include your locale glossary to the package.

Note! This includes always the local glossary even if you have set the server or database glossary active.

Serial Number

Type the serial number of Language Manager. You have to purchase one Language Manager license for each person to whom you send Language Manager. Contact Innoview or your local dealer to purchase Language Manager licenses.

Type 'evaluation' to make a package that does not contain a license of Language Manager. Such kind of package installs Language Manager to the recipient's computer and give one day evaluation period. When the recipient start the Language Manager he or she will have a change to input a proper serial number. Use the evaluation package to test the exchange feature or in the case when you let the recipient to purchase the license.


Include Files (Exchange Wizard)
Included Files (Exchange Wizard)

Shows a list that contains all the files included to the package.

Add

Adds a file to the package

Remove

Removes the selected file from the package. It is only possible to remove those files that have been manually added.


Package (Exchange Wizard)
Package File (Exchange Wizard)

Specify the file name of the exchange package file.

If you include Language Manager the exchange package is an self-extracting EXE file. Send this files to your translator. When he or she runs the package, it installs Language Manager and the dictionary files, and finally opens the dictionary.

If you did not include Language manager the exchange package is a compressed file containing the dictionary files. Send this files to your translator. He or she can open the package by choosing File | Open from Language Manager.

Windows 95

Windows 95 can not create a self-extracting EXE file. In addition of the EXE file that you specify, you have to ship the LM1, LM2, and LM3 files.

For example if you package name is Sample, LM creates four files:

Sample.exe

Sample.lm1

Sample.lm2

Sample.lm3

You have to send them all.


Dictionary Files

The following table contains the file extensions of the files that are used by Language Manager when working with dictionaries.

If yes is written in bold, yes, the file is needed when importing to the dictionary.

File Extension	Bundle Dictionary	Binary Dictionary	Text Dictionary	Server Dictionary	Desktop Database Dictionary	BDE Database Dictionary	ODBC Database Dictionary
LMP	required	required	required	required	required	required	required
LMM	optional	optional	optional	optional	optional	optional	optional
MLD	(yes)	yes	-	yes	-	-	-
TXT	yes	-	yes	-	-	-	-
properties	(yes)	-	-	-	-	-	-
DB and PX	-	-	-	-	yes	yes	yes
DBF and NDX	-	-	-	-	yes	yes	yes
MDB	-	-	-	-	-	yes	yes

In addition of thre files MULTILIZER use the following file extensions:

MLM	MULTILIZER Glossary file

MLL	MULTILIZER System Locale file

MLP	MULTILIZER Package file

LMS	Language Manager Include String file

LOG	Language Manager Log file


Language Manager Package (MLP) file. This file contains an exchange package. The following three files has been compressed to a MLP file: Language Manager Project file (LMP), Language Manager Map file (LMM), and Multilizer Dictonary file (MLD).


MULTILIZER Glossary (MLM) file. This is a file format used by Language Manager and Dictionary Server. A MLM files contains glossary data.


Microsoft Glossary (CSV) file. This is a glossary file format used by Microsoft. MSDN contains several glossary files.


Microsoft Developer’s Network is a CD-ROM subsciption containing OS versions, SDK files, etc.


MULTILIZER System Locale (MLL) file. This is a file format used by Language Manager and Dictionary Server. A MLL files contains system locale data.


Language Manager Project (LMP) file. This contains information about the dictionary. This file is required when opening the dictionary.


Dictionary Editor Project (DEP) file. The is the file format used by Dictionary Editor (the predecessor or Language Manager).


Language Manager Include String (LMS) file. This contains include strings.


Language Manager Map (LMM) file. This contains the source locations each row of the dictionary. This file is optional. If this file is missing Language Manager can not display the location of the string. Language Manager can create a new map one but it needs to have the full source code of the application.


Language Manager Log (LOG) file. This contains the last update log of the dictionary. Language Manager writes this file every time it updates the dictionary.


Text file. This contains the language, translation, or the locale table. The format is either Ansi or Unicode.


Java's property file. Used by Java's PropertyResource class.


The MLD file that is located in the server computer.


Paradox table file.


Paradox index file.


dBASE database file.


dBASE index file.


Access database file.


DB and PX files are required only if Paradox database is used.


DBF and NDX files are required only if dBASE database is used.


MDB file is required only if Access database is used.


The Command Line Parameters of Language Manager

LANGMAN [/E] [/S] [/T] [/R] [filename]

The LANGMAN.EXE program is Language Manager.

Parameter	Description

/E	Quits the LANGMAN.EXE program after completing the specified job. Use this switch in conjunction with the /S, /T or /R switches. Saves the project before quitting.

/S	Scans the source code of the project adding any new string to the dictionary.

/T	Fills up every language column that has a test attached. This fills every empty string with the test string.

/R	Removes the test strings from the dictionary. Not available it /T is specified.

filename	Specifies the Language Manager project file. (.LMP)

Example

The following command scan the NEW.LMP project file and fills the language column with test output. Finally the program saves the project and quits:

langman /e /s /t new


Reference

This chapter explains the functions of each Language Manager menu item.

Menus

File

Edit

Project

Language

Translation

View

Tools

Help


Dictionary Wizard - Welcome

The Welcome sheet gives you a brief guide about Dictionary Wizard.


Dictionary Wizard - Source

The Source sheet lets you specify the directory where the source code is located. You can add more source directories later.

Drive

The drive combo box lets you select the drive.

Dictionary

The dictionary list box lets you select the directory.

Application type

Choose the type of the application. The possible values are:

Delphi, 32-bit	a 32-bit Delphi application (Delphi 2 or later)

Delphi, 16-bit	a 16-bit Delphi application (Delphi 1)

C++Buider	a C++Builder application

Visual Basic, 32-bit	a 32-bit Visual Basic application (VB 4 or later)

Visual Basic, 16-bit	a 16-bit Visual Basic application (16-bit VB 4)

Visual J++	a Visual J++ application. Use this for all WFC application.

JBuilder	a JBuilder application or applet

Other Java	a Java application or applet. Use this for all Java projects but WFC and JBuilder.

Java’s property files	a Java application or applet using property resource bundles. Use this if you use Java’s standard localization method (i.e. resource bundles) instead of MULTILIZER components.

Unknown, please select	Dictionary Wizard could not detect the application. Select it manually.

By default Dictionary Wizard tries to detect the application type. If this fails you can change it manually by selecting the type you need.


HTML pages	HTML pages


Dictionary Wizard - Information

Collects information about the project.

Project Name

The name of the project. This is required.

Application File

The application file (EXE). This is optional and it is only used with Windows applications.

Description

The description about the dictionary you are going to create. This is optional.

Author

Your name.

Company

The name of the company.


Export Wizard - Export

The Export Properties sheet lets you specify location for the export dictionary and choose the language(s) that it contains.

Location

Type or browse the file name project file that will be written.

Languages

Select the language(s) that you want to export.

Mark translation only

Check the “Mark dictionary translate only” if you want the exported dictionary to be a translate-only. Such a dictionary can only be translated. It is not possible to scan, update, add or remove languages, etc. Check this if you plan to ship the dictionary to your translator and you want to make sure that he or she does not accidentally remove any data from the dictionary.


Dictionary Wizard - Dictionary (Export Wizard - Dictionary, Dictionary Type dialog box)

The Dictionary sheet/Dictionary Type dialog lets you choose the type of the dictionary.

The choices are:

Binary file

Text files

Bundle files

Server dictionary

Desktop database tables

BDE database tables

ODBC database tables

Note! Not every platform supports all above dictionary types.

You can change the dicitonary type later by choosing Project | Dictionary type menu.

The following table describes what kind of dictionary type each dictionary component use:

Dictionary Component	Dictionary Type
TIvBinaryDictionary or BinaryDictionary (Java and WFC) components	Binary file
TIvTextDictionary or TextDictionary (Java or WFC) components	Text files
TIvServerDictionary, ServerDictionary (Java and WFC) component	Server dictionary
TIvDBDictionary	Desktop database tables or BDE database tables
TIvODBCDictionary	ODBC database tables
TIvUserDictionary	You can not use Language Manager to edit user dictionaries.
TIvTestDictionary	Test dictionary does not require any dictionary data. It uses the native strings to generate a test translation.
BinaryDictionary, TextDictionary or ResourceDictionary (Java and WFC) components	Bundle files
DatabaseDictionary (Java and WFC) component	ODBC database tables or BDE database tables


Binary file (Dictionary Type)

The dictionary data is stored in a MLD file.

Learn more about binary dictionary.

Dictionary file name

Accept the default file name or write a new file name to the edit box or press the Browse button to browse the file. If you specify a pre-existing file it will be overwritten.

Enable detailed settings

Check this to show the detailed binary dictionary settings.

Default

Press this button to set the default binary dictionary settings.

Format

Specify the translation table format.

Value	Description

Flat strings	No context information is stored. The native string builds the key.

Context sensitive strings	Context information is stored. The native string, form type/name, and component name build the key.

Byte order

Specify the byte order of the MLD file.

Value	Description

Big-endian	Big endian byte order.

Little-endian	Little endian byte order.

Character set

Specify the character set that the MLD file uses.

Value	Description

Unicode	Unicode strings.

Code page	Ansi strings. The Windows code page of the language is used.

Version

Specify the the MLD version.

File type

Specify the file type.

Value	Description

Combined	One single combined dictionary is used. It contains all string of the application.

Distributed	The dicitonary is distributed. Each source code file has its own locale dictionary. In addition of this one common dictionary is created. It contains all the string dat do not belong any locale dictionary.

File layout

Specify the file layout.

Value	Description

All languages in a file	All languages are stored in a single file.

One language in a file	Each language is stored in its own file. The Java naming convention is used.


Text files (Dictionary Type)

The dictionary data is stored in text files.

Learn more about text dictionary.

Language file name

Accept the default file name or write a new file name to the edit boxes or press the Browse buttons to browse the file. If you specify pre-existing file it will be overwritten.

Translation file name

Accept the default file name or write a new file name to the edit boxes or press the Browse buttons to browse the file. If you specify pre-existing file it will be overwritten.

Locale file name

Accept the default file name or write a new file name to the edit boxes or press the Browse buttons to browse the file. If you specify pre-existing file it will be overwritten.

Not used by Java.

Enable detailed settings

Check this to show the detailed text dicitonary settings.

File type

By default Multilizer stores all languages in a single file. Java dictionaries can use multiple files where every language is stored in its own file.

Format

Specify the file format.

Value	Description

Ansi, Code Page	Text file using Windows code pages

Unicode, Little Endian	Unicode file using UCS2/UTF16-LE format

Unicode, Big Endian	Unicode file using UCS2/UTF16-BE format

Default

Press the Default button to set the default text dictionary settings.


Bundle files (Dictionary Type)

The dictionary data is stored in a bundle of files. BinaryDictionary, TextDictionary and ResourceDictionary beans use this format.

Accept the default dictionary name or write a new dictionary name to the edit box or press the Browse button to browse the name. If you specify a pre-existing bundle name, the bundle files will be overwritten.

Learn more


Server dictionary (Dictionary Type)

The dictionary data is stored in the Multilizer Dictionary Server (MDS). The TIvServerDictionary component uses this format.

Select or type the IP address of MDS and press the Connect button to make a connection the server. Type the name of the dictionary you want to create.

Learn more


Desktop database tables (Dictionary Type)

The dictionary data is stored in desktop database tables. The TIvDBDictionary component uses this format.

Accept the default file names or write new file names to the edit boxes or press the Browse buttons to browse the files. If you specify pre-existing files they will be overwritten.

Note! This is available only in the BDE version of Language Manager

Learn more


BDE database tables (Dictionary Type)

The dictionary data is stored in the BDE database tables. The TIvDBDictionary component uses this format.

Select the database alias and the table names. If you specify pre-existing tables they will be overwritten.

You can also specify one user name that will be granted read-only access to the dictionary. This user name can be used in your the application.

Language Manager can not create a BDE database. It only creates dictionary tables to an existing database. You must create the database manually and create a BDE alias for it before you start Language Manager.

Note! This is available only in the BDE version of Language Manager

Note! We cannot guarantee that Language Manager can create dictionaries for every BDE database. We have successfully tested Language Manager with Paradox, dBase, Access, and InterBase.

Learn more


ODBC database tables (Dictionary Type)

The dictionary data is stored in the ODBC database tables. The TIvODBCDictionary component uses this format.

Select the data source and the table names. If you specify pre-existing tables they will be overwritten.

You can also specify one user name that will be granted read-only access to the dictionary. This user name can be used in your the application.

Language Manager can not create an ODBC database. It only creates dictionary tables to an existing database. You must create the database manually and create an ODBC data source for it before you start Language Manager.

Note! We cannot guarantee that Language Manager can create dictionaries for every ODBC database. We have successfully tested Language Manager with Access, InterBase, and Solid Server.

Learn more


Dictionary Wizard - Languages (Languahes dialog box)
Dictionary Wizard - Languages (Languages dialog box)

The Languages sheet/dialog lets you add the languages (and sub language) to the dictionary. A dictionary must contain at least two languages. The first language is the native language. There is no limit on the number of languages in the dictionary.

Available languages

Available languages contain a list of available languages. Add a language by selecting and pressing the >> button right of the list box or by double clicking a language. Adding a language will move it to the Selected Languages and Locales list box.

Available sub languages

Normally you only add languages to the dictionary. A single language can support all the sub languages of the language. For example, a single German column will suffice for German (Germany), German (Austria) and German (Switzerland).

However, sometimes the words or at least the spelling of the words differs between the sub languages of the same languages. For example, the United Kingdom and United States spell some words differently. In such cases you can add a language and then add a sub language for the same language. For example, add the United Kingdom English language as the first column, and then the United States locale as the second column. Then, when the locale is English (United States) the second column will be used, otherwise the first English column will be used.

Selected languages

The most important language is the native language - this is what you use to write the application. It should be English or a fake language using English but it can also be any other. If your native language is not English you will have to manually change the language and locale words from the dictionary table after the Language Manager has created them.

You can remove a language or locale from the dictionary by selecting and pressing the << button or just double clicking the item.

For example if you are going to support English, American English, German and French choose first, followed by English (United States, German and French. Your translation table will contain four columns (English, English (United States), German and French). Your language table will contain four rows (English, English (United States), German and French). Your locale table will contains multiple rows for English, German and French locales (only if you created a dictionary for a 16-bit application).


Dictionary Wizard - Finish
Dictionary Wizard – Finish


Cell popup menu

Use the Cell popup menu to edit the selected cell(s). To open the menu press the right mouse button on any cell of the dictionary grid.

Menus

Cut

Copy

Paste

Paste Native

Edit Cell


Row popup menu

Use the Row popup menu to edit the selected row. To open the menu press the right mouse button on the gray area on the left side of the dictionary grid.

Menus

Comment

Do Not Translate

Message String

Add Row

Insert Row

Delete Row

Exclude Row

Add to Glossary


Language popup menu

Use the Language popup menu to edit the selected language. To open the menu press the right mouse button on the header area on the top of the dictionary grid.

Menus

Select

Translate

Language

Sub Languages

Font

Test

Edit Font

Revert Edit Font to Default

Default IME Mode

Show Native and

Hide All But Native


File menu

Use the File menu to create, open, save, copy and merge projects.

Menus

New

Open…

Reopen

Glossary

Save

Save As

Close

Import

Export

Send to

Print

Exit


File | New

The Dictionary Wizard dialog guides you to create a new dictionary. Follow the instructions it gives.


File | Open

Opens a project file. The file can any of the following files:

-	Language Manager project (LMP)

-	Dictionary Editor project file (DEP). A Dictionary Editor is the dictionary-editing tool used by Multilizer 2.

-	Dictionary Package file (MLP). This is a file created by the Exchange Wizard. When Language Manager open a dictionary package, it first uncompresses the files and then open the LMP file.


File | Reopen

Contains the recently used project files. Choose any to open the project file.


File | Reopen | file name

Opens the project in the list.


File | Glossary

Opens the glossary.


File | Save

Saves the current project file and the dictionary table with its current file name and location.


File | Save As

Saves the current dictionary.

Dictionary

Saves the project file with its current file name and a location that you specify. It saves the dictionary table to the current name and location.

This only changes the project file (LMP) name. If you want to change the dictionary type choose Project | Dictionary type... menu.

Glossary

Displays the Save Glossary dialog box that lets you to save the glossary to another location.


Save Glossary dialog box

Use this dialog box to save the glossary to a new location.

Local Files

Saves the glossary to local glossary file and locale file.

Give the maximum string width. This must be at least 64.

BDE Database Table (BDE)

Saves the glossary to a local BDE compatible database.

Give the maximum string width. This must be at least 64.

This is available only in Language Manager for BDE


The Enterprise edition can save also to the server based BDE databases such as InterBase, Oracle, SQL Server, etc.

MDS Glossary (Enterprise)

Saves the glossary to a dictionary server. The MDS version must be 1.2.

Give the maximum string width. This must be at least 64.

ODBC Database Table (Enterprise)

Saves the glossary to a ODBC compatible database.


File | Close

Closes the project without quitting the application.


File | Import

The Import Wizard dialog guides you to import a dictionary to the current dictionary. Follow the instructions it gives.


File | Export

The Export Wizard dialog guides you to export the dictionary. Follow the instructions it gives.


File | Send to

This popup menu makes it possible to send the dictionary or part of it to a translator, and send a translated dictionary back to the developer.

Translator

Developer


File | Send to | Translator

The Exchange Wizard dialog guides you to send the dictionary. Follow the instructions it gives.


File | Send to | Developer

Displays a message box that describes what file you have to send back to the developer.


File | Print

Displays the Print dialog box and prints the dictionary.


Print dialog
Print dialog box

Selects the printable pages and chooses the print options.

Page

This select the printable pages.

Value	Description

Current page	Prints the current page

All pages	Prints all pages. Each pages is printed separately.

All rows	Prints all rows.

Orientation

This selects the orientation of the paper.

Options

Select what parts of the dictionary are printed and specifies the printing options.

Value	Description

Info	If checked prints the dictionary information in the top of the first page.

Page number	If checked prints the page number on the top of page.

Header	If checked prints the header row on the top or every page.

Row numbers	If checked prints the row number

Wrap lines	If checked prints the string to multiple lines if the string contains line feeds.

Comment	If checked prints the row comment

Location	If checked prints the location where the string was extracted.

Each row is printed in the following way:

[row number] native language1 … languageN [comment] [location]

Printer

Shows the active printer. Press the Setup button to change it.


File | Exit

Exits the application.


Edit menu

Menus

Undo

Redo

Cell

Cut

Copy

Paste

Paste native

Find...

Find again

Sort

Next untranslated item

Next incomplete item


Edit | Undo

Undoes the last editing. Can undo cell change, row delete and row insert actions.

Rescanning the project or adding or removing language(s) clear undo and redo stacks.


Edit | Redo

Redoes the last undo.

Rescanning the project or adding or removing language(s) clear undo and redo stacks.


Edit | Cell

Displays the Edit Translation dialog box. It makes easier to edit long strings or strings containing multiple lines.


Edit Translation dialog
Edit Translation dialog box

Use this dialog box to edit long strings or strings containing multiple lines.

Native String

Contains the native string.

<language> String

Contains the string in the selected language.

Remove CRs

If pressed, removes carriage-return character from the translated string.


Edit | Cut

Cuts the selected cells to the clipboard.


Edit | Copy

Copies the selected cells to the clipboard.


Edit | Paste

Pastes the contents of the clipboard to the cells starting from the upper left cell of the selection.


Edit | Paste Native

Pastes the contents of the native cell to the current cell.


Edit | Find

Finds text for the dictionary.

Find next

Press this button to find the next string matching the find.

Close

Press this button to close the find dialog.

Find to text

Type or select the text you want to find.

Options

Check the Match case check box if you want to search case sensitive.

Check the Whole word check box if you want to search whole words only. If this is not check the Find operation finds also parts of the words.

Check the From top check box if you want to start the search from the first cell. If this is not checked the Find operation search from the start of the current selection.

Find range

This specifies the find range. The possible values are:

All languages	All language columns are scanned.

Native language	Only the native column is scanned.

Current language	Only the current column is scanned.


Edit | Find Again

Repeats the last find.


Edit | Sort

Sorts the dictionary.


Edit | Next Untranslated Item

Finds the next cell on the current language that is not translated.


Edit | Next Incomplete Item

Finds the next cell on the current language that is incomplate. A cell is incomplete if the native cell contains “&” character or ends to “…” string but the translation does not.


Project menu

Use Project menu to set the properties of the project.

Menus

Update

Include Strings

Exclude Strings

Remove Unused Strings

Scan Files…

Check

Translate

Tests

Dictionary Type...

Languages...

Locales...

Access Rights...

Edit Font...

Options...


Project | Update

Scans all the form and/or unit files found in the source directories adding new strings into the dictionary.

You can switch form and unit file scanning on and off by choosing the Project | Options menu.


Project | Include

This popup menu makes it possible to add standard strings to the dictionary.

Project Strings

Include Strings


Project | Include | Project Strings

The Project Strings dialog box lets you add strings to the current dictionary.


Project | Include | Include Strings

Shows the include strings dialog.

Learn more about include strings.


Include Strings dialog box

Check those string groups that you want to include to the dictionary.

Learn more about include strings.


Project | Exclude Strings

The Exclude dialog box contains the strings that have been excluded from the dictionary.


Project | Remove Unused Strings

Removes the unused string from the dictionary. A string is unused if the source code scanner can not find it, and the string has not been added to the dictionary.


Project | Scan Files

Displays the Scan Files dialog box that lets you to specify where to scan from and what to scan.


Scan Files dialog box

The Scan Files dialog lets you specify the file that are scanned.

Add

Add a new scan file or filter to the project. Display the Select Scan File dialog box that lets you to select the type of the scan file.

Edit

Edits the selected file or filter.

Remove

Removes the selected file or filter.

Default

Sets the default scan files.

Options

Sets the scan file options. This is visible only when a VCL project is open.


VCL Options dialog box

Use this dialog to set the VCL options.

List Views

Contains the list of the list view components.

If you use a list view component that have been derived from the TListView or TCustomListView components, add the name of the component to this list.

Tree Views

Contains the list of the tree view components.

If you use a tree view component that have been derived from the TTreeView or TCustomTreeView components, add the name of the component to this list.


Select Scan File dialog box

The Select Scan File dialog lets you specify the type of the scan file.

Source Code Files

Adds source code files. Source code files are text files written by the programmer. The Source File dialog box specifies the source code file.

Form Files

Adds form files. Form files are files written by the development system. They contains the properties and components of the form. The Form File dialog box specifies the form file

Delphi, C++Builder, Visual Basic and some Java compilers use form files.

EXE Files

The EXE File dialog box specifies the executable file.

Delphi and C++Builder use EXE files.

Resource Files

Resource files are text files written by the programmer or the development. The Resource File dialog box specifies the resource file.

Text Files

Text files are any application specific ASCII files containing strings. The Text File dialog box specifies the text file.

Press the Default button to set the default scan files.


Scan File dialog box

This Scan File dialog box lets you specify one or more files to be scanned.

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if the match the specified filter.


Source File dialog box

Specifies what kinds of source code files are scanned. The source code files are text files written by the programmer. They contain language code.

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if the match the specified filter.

File Type

Select the type of the file to be scanned.

Delphi	Object Pascal file, either a unit (*.PAS) or a project (*.DPR) file

C++	C++ file. Either a source (*.CPP, *.C) or a header (*.H, *.HPP) file

Java	Java file (*.java)

Visual Basic	Visual Basic file. Either a form (*.FRM) or a source (*.BAS) file

HTML	HTML file. Either a HTML (*.HTML) or a ASP (*.ASP) file

Custom	Custom file. Specify the comment and string data
Form example String delimiter (“) and Single line comment (//) makes this filer scanning every file with the my extension, extracting string between the “ characters and ignoring the rest of the line after the “//” string.

Translate functions

Language Manager extract strings inside the translate functions:

str := Translate('This is a string');

Give the name of the translate functions without parenthesis. Language Manager finds the translate string based on the following algorithm:

1.	Language Manager looks for the function name

2.	Language Manager checks that the next character is (

2.	String string must follow the ( character. It can continue to the next line.

3.	Language Manager checks that the previous character is either null, period (.), greater than (>), space (‘ ‘), or tab.

[<null>|<space>|.|>|<tab>]translateFunction(

Delphi

Dictionary.Translate('Language Manager finds this');

TRANSLATE('Language Manager finds this' +

  'Second line');

C++

Dictionary->Translate("Language Manager finds this");

Translate("Language Manager finds this");

Java

dictionary->translate("Language Manager finds this");

translate("Language Manager finds this");

If the entire three requirements match the Language Manager extract the string. If you use such a programming style that does not match algorithm you have to tag the string. See the next paragraph.

You can specify multiple functions by separating each tag with a semicolon (;). The tag values are case insensitive if the programming language is case insensitive (e.g. Delphi, Visual Basic).

Tags

Tags are used to specify that a string, on a line or lines in your source code, is to be added to the translation files by the Language Manager. When the Language Manager finds this tag on a line it adds the string of the line into the translation table. You can specify multiple tags by separating each tag with a semicolon (;). The tag values are case insensitive.

The default value is "ivlm".

For example the following lines use the string constant tags. The first line contains the tag inside comments. The second and third lines contain the tag in part of the constant name.

Delphi

const SAMPLE = 'Language Manager finds this'; {ivlm}

If your string locates on the multiple lines place the tag on the first line

Delphi

const SAMPLE = 'Language Manager finds these' + {ivlm}

  'two lines as well';

If the line contains multiple strings, Language Manager extracts them all.

Delphi

MessageBox(0, 'Sample', 'This is a text', MBOK); {ivlm}

Visual Basic

MsgBox "Sample", vbOKOnly, "This is a text" 'ivlm

If you want only the first string to be extracted place each string on its own line and tag only those that you want to extract.

Delphi

MessageBox(

  0,

  'Sample',

  'This is a text', {ivlm}

  MBOK);

You can also use the special characters.

Delphi

const SAMPLE = 'This string'#13#10'contains LF and CR'; {ivlm}

const SAMPLE = 'This too'#13#10; {ivlm}

Visual Basic

SAMPLE = "This string" + Chr(13) + Chr(10) + "contains LF and CR" 'ivlm

SAMPLE = "This too" + Chr(13) + Chr(10) 'ivlm

Tag type

Tags can also be exclusive. In such a case Language Managers extracts all strings but the tagged strings. To set tagging exclusive check Get all but tagged radio box.

The default tag type is inclusive except in Java where is it exclusive.


Form File dialog box

Let you specify what kinds of form files are scanned. The form files are binary files written by the development system. They contain properties and components of the forms.

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if they match the specified filter.

Scan Properties

The scan properties specify what string properties are extracted from the form files.

-	Press the Detect button to detect the scan properties of the application.

-	Press the Add button to add a new scan property.

-	Press the Edit button to edit the selected scan property.

-	Press the Delete button to delete the selected scan property.

Add as many scan properties that it takes to cover all the string properties that you have used in the application.

Form File Extension

The form file extension specifies the extension of the form files. By default the extension is the extension used by language. If your form files have some other extension type the new extension. Press the Default button to set the extension back to the default value.

The following list contains the default extension of each application type:

Application type	Form File Extension

Delphi	dfm

C++Builder	dfm

Visual Basic	frm

Visual J++	java (initForm function) and ser

JBuilder	java (jbInit function) and ser

Java	ser (not used by every Java tools)

Initialization Function

Some Java compilers store the properties in a function. This function is called the initialization function. The following Java tools use initialization function:

Visual J++	initForm

JBuilder	jbInit


EXE file dialog box

Specifies the application's executable file. Language Manager uses it to extract resource strings.

This is available only then a VCL project is used.

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if the match the specified filter.


Resource File dialog box

Let you specify what kinds of resources are scanned. The source code files are text files containing the resources such as strings, dialog boxes and menus.

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if the match the specified filter.

Scanned Items

You turn on of off scanning of resource items. The following tables contains the possible items:

Item	Description

Sting tables	STRINGTABLE strings

Dialog Boxes	DIALOG strings

Menus	MENU strings

Accelerators	ACCELERATORS strings

\n separates strings

If this checked the \n character inside a string starts a new string. For example “First string\nSecond string” contains two string: “First string” and “Second string”.


Text File dialog box

Specifies a text file. The text files contains one ore more row. On each row there can be one or more string separated by the separator character.

String00<separator>String01<sepataror><cr><lf>

String10<cr><lf>

…

File

Type the file (e.g. d:\project\test.pas) or file filter (e.g. d:\project\*.pas), press the Directory button to browse a directory, or press the File button to browse a sigle file.

Scan sub directories

Check this check box if you want the sub directories of the specified file to be scanned as well.

Exclude characters

Type the exclude characters. If the string contains only these characters it is not extracted. The default is ”-+0123456789 €$£=_,.;:<>()[]{}/\?!*#@%&¤~^|'"”.

Exclude files

Type the file name (file part only, e.g test.pas) of those files that are not scanned even if the match the specified filter.

Extracted indexes

Type the indexes of the string of the row that you want to extract. 0 is the first string, 1 the second, etc. If the value is empty all string on the row are extracted.

Separator character

Type the ASCII code of the character that separates the string on the row.


Scan Property

A scan property is a property that the Language Manager scans. The component and the property names define the property.

Component Type	Property Name	Description

‘’	‘name’	All the ‘name’ properties of every component are translated.

‘type’	‘’	All the properties of the ‘type’ component are translated.

‘componenttype’	‘propertyname’	The ‘propertyname’ property of the ‘componenttype’ component is translated.

Generally speaking, the scan property settings should be equal to the ones used by the Targets property of translator component. However there is a slight difference between the scan properties of the Language Manager and the Targets property of the translator component. The difference is how they handle embedded objects.

A target property specifies the property name and the class name to which the property belongs. A scan property specifies the property name and the component type to which the property belongs.

Example

The Caption property of the TLabel is not embedded. However the Font property is an embedded object of the TLabel component.

Translator	Language Manager

Class	Property	Component	Property

TLabel	Caption	TLabel	Caption

Caption	Caption

TFont	Name	TLabel	Font.Name

TListBox	Items	TListBox	Items.Strings

If you are unfamiliar with the way Delphi names properties, load the form into the Delphi editor and view the form as a text file.


Project | Check

Iterates every language column (including the native one) to check if any cell contains characters that may cause troubles or if the length of the translation is greater than the native one.

Translation strings

Multilizer uses only one resources (DFM files). The only properties that are changed by the Multilizer are the string-based properties. The dimensions of the dialog boxes and forms are not changed. The native language is in most cases English. However, English is in the most cases shorted that any other language. This sets certain requirements to the form layout. You have to leave some extra space to the forms in order all the translated items to fit properly.

During the check phase the program calculates the lengths of the translation in pixels using the default or custom (if given) font. If the width is greater than the threshold Language Manager paints the background of the cell in blue. The longer the translation is compared to the native string the darker blue is used.

You can change the default settings by choosing the Project | Options menu.

Ambiguous words

If the native string contains an accelerator key and the string locates on several forms, it might be inpossible to choose a none ambiguous accelerator key in the translated languages.

Checks if the visible pages contains any such rows.


Project | Translate

This popup menu manages the test language of the dicitonary.

Using Glossaries

Duplicates


Project | Translate | Using Glossaries

Iterates every language column (except the native one). If a cell is empty tries to find the corresponding translation from the glossary. If found, sets the cell to the one found from the glossary.

If you want to translate the strings of a single language choose Language | Translate.


Project | Translate | Duplicates

Finds duplicate strings and translates the empty items with the values that have already been translated.


Select Translation dialog box

If the application find more that one translation for the string from the glossaries, it shows this dialog box. Select the translation that you want to use.


Project | Fill
Project | Tests

This popup menu manages the test language of the dictionary.

Properties...

Fill

Remove


Project | Tests | Properties

Adds (or removes) the test language(s) to/from the dictionary. Shows the test language dialog.

Test languages are not visible in the language grid of Language Manager. However they are always automatically generated and stored into the dictionary whenever the dictionary is save.


Project | Tests | Fill

Iterates every language column (except the native one). If a column has a test attached, sets every cell of the column to the test translation.


Project | Tests | Remove

Removes any generated tests from the language columns.


Project | Dictionary Type

Changes the type of the dictionary. Shows the dictionary type dialog.


Project | Languages

Adds (or removes) language(s) to/from the dictionary. Shows the languages dialog.


Project | Locales

Adds or removes custom locale(s) to/from the dictionary. Shows the locales dialog.


Locales dialog box

The Locales dialog box lets you edit the locales of the project.

New

Press the New button to add a new locale to the locale table.

Copy

Press the Copy button to make a copy from the selected locale.

Edit

Press the Edit button to edit the selected locale.

Remove

Press the Remove button to delete the selected locale.


Project | Access Rights

This is available only when the dictionary type is the server, BDE or ODBC dictionary.

Server Dictionary

Use this dialog box to edit access right of the dictionary. Each dictionary has the owner and zero or more users. The owner can delete the dictionary and the users have the read-only access to the dictionary.

To change the owner of the dictionary, select the user name from the list and press the Owner button.

To add a new user to the dictionary, select the user name from the list and press the user button.

ODBC and BDE Dictionaries

You can also specify one user name that will be granted read-only access to the dictionary. This user name can be used in your the application.


Project | Edit Font

Sets the default edit font for the dictionary grid.


Project | Options

Displays the Project Options dialog box that lets you to set the options of the project.


Project Options dialog box

The Options dialog lets you configure the way the current project works. The dialog contains the following tabs.

Grid

Translation

Application

Other


Grid sheet (Project Options dialog box)

This sheet controls how to mark those strings that are either invalid or my cause troubles.

Highlight none ASCII native string

If this is checked the native string that contains characters above the standard ASCII (0-127) are marked red.

Gray unsupported languages

If this is checked the languages (columns) that are not supported by the system are marked gray. If the language is gray the system can not properly render the font used by the language. You can not input such a language.

Long Translation

If this is checked the cells having much longer width (in pixels) than the native string are marked blue. The longer the string is the darker blue is used.

Threshold specifies the limit in percents that makes the long translation marked in blue.


Translation sheet (Project Options dialog box)

This sheet controls how the items are translates when dictionary or language is translated based on the glossary strings.

Translate only empty strings

Only those strings that are currently empty are replaced.

Prompt if differs

The program prompts uses if the current value differs from the glossary value. If the user accepts the current string is replaced.

Overwrite

The current value is replaced by the glossary value.


Application sheet (Project Options dialog box)


Other sheet (Project Options dialog box)

This sheet contains other options.

Show map info

If checked the program show the map info of the string (source(s) of the string) when the user moves the mouse on the left side of the grid.

Change keyboard layout to match locale

If checked the program changes the keyboard layout to match the current locale.

Mark dictionary “translate-only”

If checked disables scanning the project and adding/deleting new languages or rows. This option is useful when giving the dictionary to the translator. The option makes sure that he or she does not accidentally remove any data from the dictionary.


Language menu

Use Language menu to set the properties of the language.

Menus

Select

Translate

Language

Sub Languages

Font

Test

Edit Font

Revert Edit Font to Default

Default IME Mode


Language | Select

Select every cells of the current language.


Language | Translate

This popup menu manages the test language of the language.

Using Glossaries

Duplicates


Language | Translate | Using Glossaries

Iterates every string of the language. If a cell is empty tries to find the corresponding translation from the glossary. If found, sets the cell to the one found from the glossary.

If you want to translate every language of the dictionary, choose Project | Translate.


Language | Translate | Duplicates

Finds duplicate strings and translates the empty items with the values that have already been translated.


Language | Language

Displays the Native Language dialog box that let the user specify the character set that the native language uses.


Native Language dialog box

The Native Language dialog box lets you specify the character set that the native language uses.

Single byte character set

Any single byte character set. This include Latin, Cyrillic, Greek, Arabic, Hebrew, Thai and Vietnamese character sets.

Chinese, Simplified

Simplified Chinese character set.

Chinese, Traditional

Traditional Chinese character set.

Japanese

Japanese character set.

Korean

Korean character set.


Language | Sub Languages

Displays the Sub Languages dialog box that let the user specify the sub languages of the language.


Sub Languages dialog box

The Sub Languages dialog lets you choose the sub languages that the language column supports.

Available sub languages

Contains the available sub languages that have not been selected to the language.

Default sub language

Contains the default sub language of the language. If the sub languages list contains any items the default sub language can only be one of those items. If the sub languages list is empty the default sub language can be any item. To select a new default sub language, select an item from either lists and press the > button, or drag the item to the default sub language area, or double click an item on either lists.

Sub languages

Contains the list of selected sub languages. Add a new item by selecting an item from the available list and pressing the >> button or dragging the item.

Specify the sub languages only if you want to use this language column only for some sub languages. If you don’t specify any sub language then every sub language of the language uses this language column.


Language | Font

Displays the Language Font dialog box that let the user specify the font of the language.

This font is used when running the application. If you want to change the edit font choose Language | Edit Font menu


Language Font dialog box

The Language Font dialog lets you select the font of the language.

Select the font name and size. If you set the font name to empty the default font name is used. If you set the font size empty the default font size is used.


Language | Test

This popup menu manages the test language of the language.

Properties...

Fill

Remove


Language | Test | Properties

Displays the Test Language dialog box that let the user specify the test of the language. Each language column may have one test attached. If a test exists the language column is filled by the test output when the user selects Language | Test | Fill menu.


Language | Test | Fill

If the selected column has a test attached, sets every cell of the column to the test translation.


Language | Test | Remove

Removes any generated tests from this language column.


Test languages dialog
Test Languages dialog box

The Test language dialog lets you add and remove test languages to the dictionary.

Add

Press the Add button to add a new test language to the dictionary.

Shows up the Test language dialog box.

Edit

Press the Edit button to edit the selected test language.

Shows up the Test language dialog box.

Remove

Press the Remove button to remove the selected test language.


Test language dialog
Test Language dialog box

The Test language dialog lets you specify the type of the test language. Test languages are pseudo-languages that Language Manager creates. They are used to test the multilingual ability of the user interface.

Language Manager can create the following test languages:

-	None

-	Cover

-	Minimum

-	Singlebyte

-	Multibyte

-	Bidirectional


None (Test language dialog)
None (Test Language dialog box)

No test is attached.


Cover (Test language dialog)
Cover (Test Language dialog box)

Every native character is replaced with a replace character. This tests for missed or hard coded strings.

Replace every character with

Type the character that is used as the replace character.


Minimum (Test language dialog)
Minimum (Test Language dialog box)

Every native string is replaced with a single character. This test that the user interface works for minimum length strings.

Reduction character

The native string can be reduced in two ways:

first	To the first character of the string.

custom	To the custom character.

Custom reduction character

Type the character that is used when the string are reduced. This is enabled when the custom reduction is used.


Singlebyte (Test language dialog)
Singlebyte (Test Language dialog box)

Every native string is extended and altered to simulate general European extension. This tests the ability of the user interface to handle European languages.

Script

The script that is used the generated the string strings.

Alternate case

The character case is alternated. For example "Sample" becomes to "SaMpLe".

Upper case

The character case is upped. For example "Sample" becomes to "SAMPLE".

Diacritics

Diacritics are added to the characters. For example "Sample" becomes to "Sämplé".

This can be used to test that the user interface handles diacritic and accented characters correctly.

Enclose

The string is enclosed to braces. For example "Sample" becomes to "{Sample}".

This can be used to test that both the begin and the end of the string are visible.

Expand

The string is expanded. For example "Sample" becomes to "Sample________X".

This can be used to test that the user interface handles longer translations correctly. In many cases English is shorted that other languages. The expansion depends on the length of the native string.

Native length (in characters)	Test length (in characters)
1...5	The native string is expanded by 200 percents. For example the world "red" that is three characters is expanded to nine characters, "red_____X"
6...10	The native string is expanded by 100 percents.
11...20	The native string is expanded by 70 percents.
21...30	The native string is expanded by 50 percents.
31...50	The native string is expanded by 30 percents.
over 50	The native string is expanded by 20 percents.

The above expanding percentages may seem the be quite high. In many cases the translated words or pharses in other languages are only slightly longer than in English. But there always exists translations that are much longer that the English one. For example the word "red" is only three characters in English but eight characters ("punainen") in Finnish.


Multibyte (Test language dialog)
Multibyte (Test Language dialog box)

Every native string is converted to the matching double byte character.

Script

The script that is used the generated the string strings.

Use double byte characters

If this is checked the double byte ASCII characters are used.


Bidirectional (Test language dialog)
Bidirectional (Test Language dialog box)

Every native string is altered to simulate the selected bi-directional language.

Script

The script that is used the generated the string strings.


Language | Fill Test

Fills all empty cells of the language with the string generated by the test of the language.


Language | Remove Test

Removes all the test-generated strings.


Language | Edit Font

Displays the Language Font dialog box that let the user specify the edit font of the language.

This font is used when editing the language. If you want to change the runtime font choose Language | Font menu


Language | Revert Font to Default

Reverts the edit font back the default edit font.


Language | Default IME Mode
Language | Defaut IME Mode

Selects the default IME mode of the language. This is available only in the Far Eastern languages.


Translation menu

Menus

Comment

Do Not Translate

Message String

Add Row

Insert Row

Delete Row

Exclude Row

Add to Glossary


Translation | Comment

Edits the comment of the row.


Translation | Do Not Translate

Disables or enables the row. By disabling the row you can make sure that it is not translated but you do not have to remove it from the dictionary.


Translation | Message String

Marks or unmarks the row as a message string. If the row is marked then the program checks that the translated messages match the native message.

Choose Project | Check to run the check.


Translation | Add row

Adds a new row on the end of the dictionary.


Translation | Insert Row

Inserts a new row above the active row.


Translation | Delete Row

Deletes the active row from the dictionary.


Translation | Exclude Row

Exclude the active row from the dictionary.


Translation | Add to Glossary

Adds the current row to the glossary.


View
View menu

Use View menu to select what language columns are visible.

Menus

Show All Languages…

Show Supported Languages…

Show Native and

Hide All But Native

Language 1-N


View | Show all Languages

Shows all the languages.


View | Show Supported Languages

Shows the supported languages. A supported language is a language that the current Windows version supports.


View | Show Native and

Shows the native language and one other language.


View | Show Native and | <language>

Shows the native language and this language.


View | Hide all but native menu
View | Hide All But Native

Hides all but the native language.


View | <language> visible
View | <language>

Shows or hides a language.


Tools menu

Use Tools menu to configure Language Manager and manage MDS.

Menus

Custom Glossary

Glossaries

System Locales

Update System Locales

MDS Manager

Options

Compose strings

Licenses


Custom Glossary menu
Tools | Custom Glossary

Displays the Custom Glossary dialog box that lets you specify the custom glossary that Language Manager uses. If you have multiple custom glossaries you can switch the active custom glossary by using this feature.

Learn more about glossaries.


Custom Glossary dialog box

The Glossary dialog box lets you specify the active custom glossary.

Glossary Type

Select the glossary type. This can be any of the following values:

Locale Files

Use the file based glossary and locale files. The following files are used:

File	Description

Glossary file	Contains the glossary strings

Locale file	Contains the system locales

You can select a new glossary or locale files by pressing the browse buttons and specifying the file. If the files do not exist Language Manager will create them.

BDE Database Tables (BDE)

Use the glossary and locale tables locating on a local database. The following tables are used:

Table	Description

Language Table	Contains the glossary languages

Translation Table	Contains the glossary strings

Locale Table	Contains the system locales

You can select a new glossary and locale tables by choosing the database name and specifying the table names. If the database does not have the tables Language Manager will create them.

Note! If the database name is empty Language Manager will use local Paradox tables locating on the Language Manager directory.


The Enterprise edition can use also the server based BDE databases such as InterBase, Oracle, SQL Server, etc.

MDS Glossary (Enterprise)

ODBC Database Tables (Enterprise)


Glossaries menu
Tools | Glossaries

Displays the Glossaries dialog box that lets you specify the glossaries that Language Manager uses.

Learn more about glossaries.


Glossaries dialog box

The Glossaries dialog box lets you specify the glossaries.

Add

Adds a new glossary.

Dictionary

Adds every glossary file from the selected directory.

Edit

Edits the selected glossary.

Remove

Removes the selected glossary.

Up

Moves the selected glossary one step up in the search order.

Down

Moves the selected glossary one step down in the search order.


Glossary dialog box

The Glossary dialog box lets you edit a glossary.

Type

The type of the clossary. This can be any of the following values:

Type	Description

Multilizer Dictionary File	A MLD file

Multilizer Glossary File	A MLM file

Microsoft Glossary File	A CSV file. This is the file formats used by Microsoft glossaries. MSDN contains several glossary files in over 15 languages.

Text File	Any text file containing glossary data in the following format:
[”]native text[”]delimeter[”]translated text[”]<CR><LF>
Use this format to use the glossary files from your other localization tools.

Name

The name of the dictionary. This can contain any text.

Description

Any textual description about the glossary.


MDS Glossary	A MDS glossary (Enterprise only)

ODBC Database Tables	ODBC dictionary tables (Enterprise only)

BDE Database Tables	BDE dictionary tables (Enterprise only, BDE)


System Locales menu
Tools | System Locales

Displays the System Locales dialog box that lets you edit the system locales.


System Locales dialog box

The System Locales dialog box lets you edit the system locales of Language Manager.

New

Press the New button to add a new locale to the system locale.

Copy

Press the Copy button to make a copy from the selected locale.

Edit

Press the Edit button to edit the selected locale.

Remove

Press the Remove button to delete the selected locale.


Update System Locales menu
Tools | Update System Locales

Updates the system locales to contain all the locales the system contains. Choose this menu if you have upgraded your operating system to a version that might contain a support for new locale(s).

By default the system locales table contains all the known locales of WIN32.


Tools | MDS Manager

Displays the MDS Manager dialog box that lets you administrate MDS service(s).


MDS Manager dialog box

The MDS Manager dialog lets you administrate dictionary server(s).

Server

Type or select the IP address or domain name of the computer running the dictionary server. If you type the address, press the Connect button to make a connection to the server.

The dialog contains the following tabs:

Users

Dictionaries

Clients

License

Log

Update

Press the Update button to get the current data from the server.

Close

Press the Close button to close the MDS Manager.


Users sheet (MDS Manager dialog box)

Use the Users sheet to add, edit and remove dictionary server users.

User list

Contains the list of users.

If you have logged in using a administrator level user id the list contains all user of the server. If you have logged in using an author level user id the list contains all the users that you own.

Add

Press the Add button to add a new user to the server.

Edit

Press the Edit button to edit the selected user. You can also double click a user to edit it.

Remove

Press the Remove button to delete the selected user.

Note! Only an administrator user can edit all users. If you used an author id to log in to the server only those user id that belong to are shown.


Dictionaries sheet (MDS Manager dialog box)

Use the Dictionaries sheet to edit and remove dictionary server dictionaries.

Dictionary list

Contains the list of dictionaries.

If you have logged in using a administrator level user id the list contains all dictionaries of the server. If you have logged in using an author level user id the list contains all the dictionaries that you own.

Edit

Press the Edit button to edit the selected dictionary. You can also double click a dictionary to edit it.

This feature does not edit the contents of the dictionary but lets you rename the dictionary or change the owner and the description of the dictionary. Choose File | Open to edit the dictionary contents.

Remove

Press the Remove button to delete the selected dictionary.


Clients sheet (MDS Manager dialog box)

Use the Clients sheet to view and remove the current clients of the dictionary server.

Client tree

Contains the list of clients.

If you have logged in using a administrator level user id the list contains all the current clients of the server. If you have logged in using an author level user id the list contains all the clients that use a user id and a dictionary that you own.

Info

Press the Info button view detailed info about the selected client.

Drop

Press the Drop button delete the selected client. This immediately drops the client from the server.


License sheet (MDS Manager dialog box)

Use the License sheet to add license keys to the dictionary server.

By default the MDS has no license data. To increase the license count you must purchase a license key(s). There exist two kinds of license keys. The first is a standard license that contains a certain amount of licenses (e.g. 5, 10, or 50). Another license type is a Web license. It contains an unlimited license for the Java applets.

Contact Innoview, or your local dealer to get the license data.

Current license

Shows the current license.

Add a new license key

Type or paste the license key to the edit field. Press the Add button to transfer the license to the server.


Log sheet (MDS Manager dialog box)

Change log file

By default MDS writes all the log entries in the same file. You can make this file to change periodically. The possible values are:

Never	MDS uses the same log file always.
The format of the log file is <dir>\<body>.log
(c:\mds\mds.log)

Annually	MDS changes the log file every year.
The format of the log file is <dir>\<body>_<year>.log
(c:\mds\mds_1997.log)

Monthly	MDS changes the log file every month.
The format of the log file is <dir>\<body>_<mo>_<year>.log
(c:\mds\mds_10_1997.log)

Weekly 	MDS changes the log file every week.
The format of the log file is <dir>\<body>_0<we>_<year>.log
(c:\mds\mds_044_1997.log)

Daily	MDS changes the log file every day.
The format of the log file is <dir>\<body>_<da>_<mo>_<year>.log
(c:\mds\mds_29_10_1997.log)

Log level

Inactive	No events are logged.

Fatal errors	MDS logs fatal errors. A fatal error is an error that terminates MDS.

Errors	MDS logs errors. An error makes the current event to fail but does not affects to other clients or unrelated messages of the current client.

Warnings	MDS logs warnings.

All events	MDS logs all events.

Directory

Contains the directory where MDS stores the log file(s). The MDS service must have write access to the directory. If the directory is empty the default directory is used.

Body

Contains the beginning part of the log file. If the body is empty ‘MDS’ is used.

Log file

Shows a sample log file name of the current settings.

Set

Updates the MDS to use the log settings of this sheet.

Default

Get the default value to the log settings.

Note! This does update the MDS log settings. Press the Set button to store the default settings to the MDS.


Tools | Options menu
Tools | Options

Displays the Options dialog box that lets you to set the options of Language Manager.


Options dialog box

The Options dialog lets you configure the way Language Manager works.

Language

You can change the language of Language Manager.

Default Directory

You can change the default directory of Language Manager.

Other

You can turn off the application hints by unchecking the “Show hints” check box.

You can turn off the application online help by unchecking the “Enable online help” check box.


Tools | Compose strings menu
Tools | Compose strings

Displays the compose strings of the Latin code pages.

Baltic

East Europe

Turkish

Western


Compose Strings dialog box

The Compose Strings dialog box lets you view and edit the compose strings of the accented and extended characters of the character set.

Double click an item or press the Edit button to edit the selected compose string.


Compose String dialog box

The Compose String dialog box lets you view and edit the compose string of an accented or an extended character of the character set.

The Character group contains the character. The Code group contains the code point of the character on the code page.

Type the compose string into the Compose chars group. The strings must contain two characters.


Tools | Compose strings | Baltic (1257) menu
Tools | Compose strings | Baltic

Displays the compose strings of the Baltic (1257) code page.


Tools | Compose strings | East Europe (1250) menu
Tools | Compose strings | East Europe

Displays the compose strings of the East Europe (1250) code page.


Tools | Compose strings | Turkish (1254) menu
Tools | Compose strings | Turkish

Displays the compose strings of the Turkish (1254) code page.


Tools | Compose strings | Western (1252) menu
Tools | Compose strings | Western

Displays the compose strings of the Western (1252) code page.


Tools | Licenses menu
Tools | Licenses

Displays the Licenses dialog box that lets you to register and upgrade Multilizer products.


Licenses dialog box

Shows the current Multilizer licenses of the computer.

License	Description

None	No license. The evaluation license has been expired. You can register the the product by selecting the product and pressing the Register button.

Limited	The limited edition. You can register the product by selecting the item and pressing the Register button.

Evaluation	The evaluaton period is currently active. You can register the product by selecting the item and pressing the Register button.

Standard	The standard edition. You can upgrade the product to the professional editon by selecting the item and pressing the Upgrade button.

Professional	The professional edition.

Register/Upgrade

Press this button to register or upgrade the selected Multilizer product.


Register dialog box

The Register dialog lets you register or upgrade a Multilizer product. Type the serial number into the edit field and press the OK button.


Help menu

Menus

Contents

VCL and VB Components

WFC Components

Java Components

Dictionary Server

Support Pager

About


Help | Contents

Displays online Help for the Language Manager.


Help | VCL and VB Components

Displays online Help for Multilizer VCL and VB Editions.


Help | WFC Components

Displays online Help for Multilizer WFC Edition.


Help | Java Components

Displays online Help for Multilizer Java Edition.


Help | Dictionary Server

Displays online Help for Dictionary Server


Help | Support Page

Opens the Multilizer support page on the browser. You get access to the support information of each Multilizer product that you have registered. You can also download version updates.


Help | About

Displays short information about the Language Manager.


Chinese IME Mode dialog
Chinese IME Mode dialog box

pro32 only

Let you choose the default IME mode for Chinese.


Japanese IME Mode dialog
Japanese IME Mode dialog box

pro32 only

Let you choose the default IME mode for Japanese.


Korean IME Mode dialog
Korean IME Mode dialog box

pro32 only

Let you choose the default IME mode for Korean.


Password dialog
Password dialog box

pro32 only

Let you type in the user name and the password.


Resource bundle format
Resource bundle formats

Multilizer Java Edition uses two kinds of resource bundles:

Binary file

This is Multilizer's propiertary dictionary file format. It is a language and operation system independent binary file format. The file extension must be '.mld'. The MLD specification is avaiable from Multilizer’s Web site.

Advantages	Disadvantages
+ Fastest and most compact dicitonary format.	- Only Language Manager can edit them.
Text file

This is standard Unicode text file. (UTF-16LE or UTF-16BE) is used. The file extension must be '.translations'.

Advantages	Disadvantages
+ Stores translation data in a standard human-readable format: Unicode text files.	- Little bit slower than the binary file.
Each line contains the string in the native language and in the translated language. The two strings are separated by tab character. The following example contains a Finnish translation.

This is a sample	Tämä on esimerkki

When using the binary format, your components can contain space and other special characters except tabs, line feeds, and carriage returns.

label1 = new Label("This is a sample"); //ivde


Property file

This format uses the standard Java's property file format.

Advantages	Disadvantages
+ Standard Java's resource bundle format.	- Can not contain spaces and other special characters such as equal sign, tabs, line feeds, or carriage returns.
	- All the none-ASCII characters are coded using the Unicode escapes. This make them hard to read and edit.
	- Keys can only contains English characters. This means that the native language of your application must be English.
Each line contains the string in the key and in the translated language. The translation is separated from the key using the equal sign (=).The following example contains a Finnish translation.

This_is_a_sample=T\u00E4m\u00E4 on esimerkki

Note that the a with dots (ä) are coded using Unicode escapes (\u00E4).

Because property format keys can not contain spaces you can not use standard English as the native application language.

label1 = new Label("This_is_a_sample"); //ivde

Note! Because Multilizer can translate all properties automatically you do no have to write any code to translate the string as you would have to do if programmed directly on the top of JDK's resource bundles.

label1 = new Label(bundle.getString("This_is_a_sample"));


Text dictionary vs. binary dictionary

Text dictionary stores the translation data in an Ansi or Unicode text file. The dictionary uses three special characters to separate translation with each other. They are the tab (9h), the line feed (Ah), and the carriage returns (Dh) characters. The translation data must not contain these characters. Unfortunately it is quite common to have tabs and line feeds in the strings. This is why we implemented a binary dictionary. It can contain any characters.

We recommend using binary dictionary by default. Use the text dictionary only if you want to edit the dictionary manually, or you want to share the dictionary files with some other application.


None-ASCII native string

The native column of the database dictionary's translation table must be indexed. Most databases can only index the plain ASCII characters. If your native language contain none-ASCII character use some other dictionary format but the database dictionary.


Database dictionary vs. File dictionary

It is not recommended to use database dictionary:

-	Database dictionaries add coresiderable overhead to your application.

-	They are much slower than binary, text, or server dictionaries.

-	The maximum string witdh of the database dictionary is limited.

We recommend using binary or text dictionaries instead of the database dictionary.


Unicode usage

The native string format of VCL is Ansi strings. Even if VCL contain WideString type no property can store wide strings but Ansi strings.

That's why using Unicode text dictionary is not recommanded unless you plan to share the translation data with some other application requiring Unicode. Ansi text files are much faster and require less space. You do not need to use Unicode in order to support Far Eastern languages.


MLD settings

MLD file can store the translation data using Ansi string or Unicode strings. If your application requires Ansi strings (VCL, Visual Basic) but the dictionary is in Unicode format an extra conversion must be done. This takes time and in some cases it might not be possible at all.

To get the optimal performance use always the default MLD settings. They are optimized for the target application.

If you want to make the dictionary portable to various operatiing system, use the Unicode format.


Language vs. sublanguage
Languages vs. sublanguages

In many cases the same language is spoken in several countries. For example Swedish is spoken in Sweden and Finland, and English is spoken in UK, US, Canada, Australia, etc. These country depend language are called sublangugaes. Even if the sublanguages are basically the same there might have some difference in spelling of some words. (e.g. colour in UK and color is US).

If all sublanguages use the same spelling (e.g. Swedish (Sweden) and Swedish (Finland)), they can share the same language column in the dictionary. However if the spelling of a sublanguage differs from the other (e.g. US English and English), a separate language column is needed.


Fake native language
Why should the native language be English?

Although Multilizer can handle any Western language as the native language we strongly recommend that you use English or a fake language using English strings as the native language. There are three good reason for this

-	Include strings of Language Manager are in English.

-	Multilingual common dialog components only support US English as the native language

-	English is known by all programmers around the world. Programming in English protects your investments in the future.

If you still want to use some other language as the native language, it is OK. Just make sure that you use a fake language where all the language names, the include strings and the common dialog strings are in English and the rest is in your language (e.g. French, German, Spanish, etc).


Context sensitive vs. Flat dictionaries

Ambiguous Words


Delphi and C++Builder Format Strings

Format strings specify required formats to formatting routines.

Description

Format strings passed to the string formatting routines contain two types of objects--plain characters and format specifiers. Plain characters are copied verbatim to the resulting string. Format specifiers fetch arguments from the argument list and apply formatting to them.

Format specifiers have the following form:

"%" [index ":"] ["-"] [width] ["." prec] type

A format specifier begins with a % character. After the % come the following, in this order:

An optional argument index specifier, [index ":"]

-	An optional left justification indicator, ["-"]

-	An optional width specifier, [width]

-	An optional precision specifier, ["." prec]

-	The conversion type character, type

The following table summarizes the possible values for type:

d	Decimal. The argument must be an integer value. The value is converted to a string of decimal digits. If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has less digits, the resulting string is left-padded with zeros.

u	Unsigned decimal.  Similar to 'd' but no sign is output.

e	Scientific. The argument must be a floating-point value. The value is converted to a string of the form "-d.ddd...E+ddd". The resulting string starts with a minus sign if the number is negative. One digit always precedes the decimal point.

The total number of digits in the resulting string (including the one before the decimal point) is given by the precision specifier in the format string--a default precision of 15 is assumed if no precision specifier is present. The "E" exponent character in the resulting string is always followed by a plus or minus sign and at least three digits.

f	Fixed. The argument must be a floating-point value. The value is converted to a string of the form "-ddd.ddd...". The resulting string starts with a minus sign if the number is negative.

The number of digits after the decimal point is given by the precision specifier in the format string--a default of 2 decimal digits is assumed if no precision specifier is present.

g	General. The argument must be a floating-point value. The value is converted to the shortest possible decimal string using fixed or scientific format. The number of significant digits in the resulting string is given by the precision specifier in the format string--a default precision of 15 is assumed if no precision specifier is present.

Trailing zeros are removed from the resulting string, and a decimal point appears only if necessary. The resulting string uses fixed point format if the number of digits to the left of the decimal point in the value is less than or equal to the specified precision, and if the value is greater than or equal to 0.00001. Otherwise the resulting string uses scientific format.

n	Number. The argument must be a floating-point value. The value is converted to a string of the form "-d,ddd,ddd.ddd...". The "n" format corresponds to the "f" format, except that the resulting string contains thousand separators.

m	Money. The argument must be a floating-point value. The value is converted to a string that represents a currency amount. The conversion is controlled by the CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator, and CurrencyDecimals global variables, all of which are initialized from the Currency Format in the International section of the Windows Control Panel. If the format string contains a precision specifier, it overrides the value given by the CurrencyDecimals global variable.

p	Pointer. The argument must be a pointer value. The value is converted to an 8 character string that represents the pointers value in hexadecimal.

s	String. The argument must be a character, a string, or a PChar value. The string or character is inserted in place of the format specifier. The precision specifier, if present in the format string, specifies the maximum length of the resulting string. If the argument is a string that is longer than this maximum, the string is truncated.

x	Hexadecimal. The argument must be an integer value. The value is converted to a string of hexadecimal digits. If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has fewer digits, the resulting string is left-padded with zeros.

Conversion characters may be specified in uppercase as well as in lowercase--both produce the same results.

For all floating-point formats, the actual characters used as decimal and thousand separators are obtained from the DecimalSeparator and ThousandSeparator global variables.

Index, width, and precision specifiers can be specified directly using decimal digit string (for example "%10d"), or indirectly using an asterisk character (for example "%*.*f"). When using an asterisk, the next argument in the argument list (which must be an integer value) becomes the value that is actually used. For example,

Delphi

Format('%*.*f', [8, 2, 123.456])

C++Builder

TVarRec args[3] = {8,2,123.456};

Format("%*.*f", args, 2);

is the same as

Delphi

Format('%8.2f', [123.456])

C++Builder

Format("%8.2f", 123.456, 0);

A width specifier sets the minimum field width for a conversion. If the resulting string is shorter than the minimum field width, it is padded with blanks to increase the field width. The default is to right-justify the result by adding blanks in front of the value, but if the format specifier contains a left-justification indicator (a "-" character preceding the width specifier), the result is left-justified by adding blanks after the value.

An index specifier sets the current argument list index to the specified value. The index of the first argument in the argument list is 0. Using index specifiers, it is possible to format the same argument multiple times. For example "Format('%d %d %0:d %1:d', [10, 20])" produces the string '10 20 10 20'.


Visual Basic Format Strings


Java Format Strings


Old Context Sensitive Format

Multilizer VCL Edition from 4.1 to 4.1.4 used the Name property of the form as the form part of the context. For example if the value of the Caption property of Label1 (TLabel) component on the MainForm (TForm1) was ‘Sample’, the key value was “Sample”, “MainForm”, “Label1”. This worked just OK when the form inheritance was not used. However if the visual form inheritance was used the translator could translate only the topmost form in a context sensitive way. All other forms were translated in a flat way. This may cause ambiguous translations even if the dictionary would not be ambiguous.

To correct this Multilizer 4.1.5 and later use the type name of the form as the context data. The dictionary needs to be rescanned on order to update the context data.

Press Yes to start rescanning. If you press No you can rescan the project later by choosing Project | Update.


Glossary

This glossary contains terminology used in Multilizer and in the globalisation process.

BDE

bidirectional

code page

current code page

Cyrillic

desktop database

double byte

EMU

fake native language

ideograph character

IME

language table

Latin

localization

locale

locale data

locale table

MDS

MFC

MLD

multi byte

multilingual

native column

native language

NLSAPI

ODBC

primary language id

single byte

single worldwide binary

single worldwide source

source code

SQL database

sub language id

test language

test translation

text file

translate column

translate language

translation table

VCL